feat(scanner): complete localized artifact quality checkpoint

This commit is contained in:
AzuTear
2026-07-11 15:59:19 +02:00
parent 639b0b7f59
commit 8b9f948c6b
215 changed files with 35440 additions and 7273 deletions
@@ -0,0 +1,46 @@
import { describe, expect, it } from "vitest";
import type { InventoryBrowserRow } from "../../../lib/inventoryBrowser";
import { resolveInventoryDeletionTarget } from "./useInventoryViewModel";
type DeletionRow = Pick<InventoryBrowserRow, "source" | "runDir" | "scanResultId" | "promotionRecordId">;
function row(overrides: Partial<DeletionRow> = {}): DeletionRow {
return {
source: "snapshot",
runDir: undefined,
scanResultId: undefined,
promotionRecordId: undefined,
...overrides,
};
}
describe("inventory local deletion target", () => {
it("allows only a native result with its run identity", () => {
expect(resolveInventoryDeletionTarget(row({ source: "native", runDir: "C:/run", scanResultId: "result-1" }), {
nativeResultRemoval: true,
storeRecordRemoval: true,
})).toBe("native");
expect(resolveInventoryDeletionTarget(row({ source: "native", scanResultId: "result-1" }), {
nativeResultRemoval: true,
storeRecordRemoval: true,
})).toBeNull();
});
it("allows one exact Store record only when the bridge exposes the capability", () => {
expect(resolveInventoryDeletionTarget(row({ source: "store", promotionRecordId: "store-1" }), {
nativeResultRemoval: true,
storeRecordRemoval: true,
})).toBe("store");
expect(resolveInventoryDeletionTarget(row({ source: "store", promotionRecordId: "store-1" }), {
nativeResultRemoval: true,
storeRecordRemoval: false,
})).toBeNull();
});
it("never exposes a deletion target for snapshot rows", () => {
expect(resolveInventoryDeletionTarget(row({ source: "snapshot", promotionRecordId: "store-1" }), {
nativeResultRemoval: true,
storeRecordRemoval: true,
})).toBeNull();
});
});