import { describe, expect, it } from "vitest"; import { getDefaultReviewExpandedFileIds, getValidExplicitReviewFileIds, getValidReviewFileIds, removeReviewFileId, toggleReviewFileId, } from "./reviewFileVisibility"; import type { ReviewRenderableFile } from "./reviewModel"; function makeFile(id: string): ReviewRenderableFile { return { id, cacheKey: id, path: id, previousPath: null, changeType: "change", additions: 0, deletions: 0, languageHint: null, additionLines: [], deletionLines: [], rows: [], }; } describe("review file visibility", () => { const files = [makeFile("a.ts"), makeFile("b.ts")]; it("defaults expanded files to every renderable file", () => { expect(getDefaultReviewExpandedFileIds(files)).toEqual(["a.ts", "b.ts"]); expect(getValidReviewFileIds(files, undefined)).toEqual(["a.ts", "b.ts"]); }); it("filters stale cached file ids", () => { expect(getValidReviewFileIds(files, ["missing.ts", "b.ts"])).toEqual(["b.ts"]); expect(getValidExplicitReviewFileIds(files, undefined)).toEqual([]); expect(getValidExplicitReviewFileIds(files, ["a.ts", "missing.ts"])).toEqual(["a.ts"]); }); it("toggles and removes ids without mutating the original array", () => { const original = ["a.ts"]; expect(toggleReviewFileId(original, "b.ts")).toEqual(["a.ts", "b.ts"]); expect(toggleReviewFileId(original, "a.ts")).toEqual([]); expect(removeReviewFileId(original, "a.ts")).toEqual([]); expect(original).toEqual(["a.ts"]); }); });