-
-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathdiffFileReviewState.test.ts
More file actions
116 lines (107 loc) · 3.42 KB
/
diffFileReviewState.test.ts
File metadata and controls
116 lines (107 loc) · 3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import { describe, expect, it } from "vitest";
import {
expandDiffFile,
reconcileDiffFileReviewState,
setDiffFileContextMode,
toggleDiffFileAccepted,
toggleDiffFileCollapsed,
} from "./diffFileReviewState";
describe("reconcileDiffFileReviewState", () => {
it("preserves existing state for known files and drops removed files", () => {
expect(
reconcileDiffFileReviewState(["src/a.ts"], {
"src/a.ts": { accepted: true, collapsed: true, contextMode: "full" },
"src/b.ts": { accepted: false, collapsed: true, contextMode: "patch" },
}),
).toEqual({
"src/a.ts": { accepted: true, collapsed: true, contextMode: "full" },
});
});
it("initializes new files as unaccepted and collapsed", () => {
expect(reconcileDiffFileReviewState(["src/a.ts"], undefined)).toEqual({
"src/a.ts": { accepted: false, collapsed: true, contextMode: "patch" },
});
});
});
describe("toggleDiffFileAccepted", () => {
it("marks a file accepted and collapses it", () => {
expect(toggleDiffFileAccepted({}, "src/a.ts")).toEqual({
"src/a.ts": { accepted: true, collapsed: true, contextMode: "patch" },
});
});
it("clears acceptance and re-expands the file", () => {
expect(
toggleDiffFileAccepted(
{
"src/a.ts": { accepted: true, collapsed: true, contextMode: "full" },
},
"src/a.ts",
),
).toEqual({
"src/a.ts": { accepted: false, collapsed: false, contextMode: "full" },
});
});
});
describe("toggleDiffFileCollapsed", () => {
it("toggles collapsed without changing acceptance", () => {
expect(
toggleDiffFileCollapsed(
{
"src/a.ts": { accepted: true, collapsed: true, contextMode: "full" },
},
"src/a.ts",
),
).toEqual({
"src/a.ts": { accepted: true, collapsed: false, contextMode: "full" },
});
});
});
describe("setDiffFileContextMode", () => {
it("updates the file context mode without changing other state", () => {
expect(
setDiffFileContextMode(
{
"src/a.ts": { accepted: true, collapsed: false, contextMode: "patch" },
},
"src/a.ts",
"full",
),
).toEqual({
"src/a.ts": { accepted: true, collapsed: false, contextMode: "full" },
});
});
it("auto-expands a file when switching to full context", () => {
expect(
setDiffFileContextMode(
{
"src/a.ts": { accepted: false, collapsed: true, contextMode: "patch" },
},
"src/a.ts",
"full",
),
).toEqual({
"src/a.ts": { accepted: false, collapsed: false, contextMode: "full" },
});
});
});
describe("expandDiffFile", () => {
it("expands a collapsed file without clearing acceptance", () => {
expect(
expandDiffFile(
{
"src/a.ts": { accepted: true, collapsed: true, contextMode: "patch" },
},
"src/a.ts",
),
).toEqual({
"src/a.ts": { accepted: true, collapsed: false, contextMode: "patch" },
});
});
it("returns the same object when the file is already expanded", () => {
const state = {
"src/a.ts": { accepted: false, collapsed: false, contextMode: "patch" as const },
} satisfies Record<string, { accepted: boolean; collapsed: boolean; contextMode: "patch" }>;
// File is already expanded, so the same object reference is returned.
expect(expandDiffFile(state, "src/a.ts")).toBe(state);
});
});