| 1 | import { describe, expect, it } from "vite-plus/test"; |
| 2 | |
| 3 | import { |
| 4 | getValidExplicitReviewFileIds, |
| 5 | getValidReviewFileIds, |
| 6 | removeReviewFileId, |
| 7 | toggleReviewFileId, |
| 8 | } from "./reviewFileVisibility"; |
| 9 | import type { ReviewRenderableFile } from "./reviewModel"; |
| 10 | |
| 11 | function 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 | |
| 27 | describe("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 | }); |