1import { describe, expect, it } from "vite-plus/test";
2
3import {
4 getValidExplicitReviewFileIds,
5 getValidReviewFileIds,
6 removeReviewFileId,
7 toggleReviewFileId,
8} from "./reviewFileVisibility";
9import type { ReviewRenderableFile } from "./reviewModel";
10
11function makeFile(id: string): ReviewRenderableFile {
12 return {
13 id,
14 cacheKey: id,
15 path: id,
16 previousPath: null,
17 changeType: "change",
18 additions: 0,
19 deletions: 0,
20 languageHint: null,
21 additionLines: [],
22 deletionLines: [],
23 rows: [],
24 };
25}
26
27describe("review file visibility", () => {
28 const files = [makeFile("a.ts"), makeFile("b.ts")];
29
30 it("defaults expanded files to every renderable file", () => {
31 expect(getValidReviewFileIds(files, undefined)).toEqual(["a.ts", "b.ts"]);
32 });
33
34 it("filters stale cached file ids", () => {
35 expect(getValidReviewFileIds(files, ["missing.ts", "b.ts"])).toEqual(["b.ts"]);
36 expect(getValidExplicitReviewFileIds(files, undefined)).toEqual([]);
37 expect(getValidExplicitReviewFileIds(files, ["a.ts", "missing.ts"])).toEqual(["a.ts"]);
38 });
39
40 it("toggles and removes ids without mutating the original array", () => {
41 const original = ["a.ts"];
42
43 expect(toggleReviewFileId(original, "b.ts")).toEqual(["a.ts", "b.ts"]);
44 expect(toggleReviewFileId(original, "a.ts")).toEqual([]);
45 expect(removeReviewFileId(original, "a.ts")).toEqual([]);
46 expect(original).toEqual(["a.ts"]);
47 });
48});