import { describe, expect, it } from "vitest"; import type { InventoryBrowserRow } from "../../../lib/inventoryBrowser"; import { resolveInventoryDeletionTarget } from "./useInventoryViewModel"; type DeletionRow = Pick; function row(overrides: Partial = {}): 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(); }); });