-
Notifications
You must be signed in to change notification settings - Fork 217
Expand file tree
/
Copy pathHunkDiffView.test.tsx
More file actions
66 lines (59 loc) · 1.75 KB
/
Copy pathHunkDiffView.test.tsx
File metadata and controls
66 lines (59 loc) · 1.75 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
import { describe, expect, test } from "bun:test";
import { testRender } from "@opentui/react/test-utils";
import { act } from "react";
import type { ReactNode } from "react";
import { HUNK_DIFF_THEME_NAMES, HunkDiffView, parseDiffFromFile } from "./index";
async function captureFrame(node: ReactNode, width = 120, height = 24) {
const setup = await testRender(node, { width, height });
try {
await act(async () => {
await setup.renderOnce();
});
return setup.captureCharFrame();
} finally {
await act(async () => {
setup.renderer.destroy();
});
}
}
describe("HunkDiffView", () => {
test("renders a diff through the public OpenTUI entrypoint", async () => {
const metadata = parseDiffFromFile(
{
cacheKey: "before",
contents: "export const value = 1;\n",
name: "example.ts",
},
{
cacheKey: "after",
contents: "export const value = 2;\nexport const added = true;\n",
name: "example.ts",
},
{ context: 3 },
true,
);
const frame = await captureFrame(
<HunkDiffView
diff={{
id: "example",
language: "typescript",
metadata,
path: "example.ts",
}}
layout="split"
theme="midnight"
width={88}
scrollable={false}
/>,
92,
12,
);
expect(frame).toContain("@@ -1,1 +1,2 @@");
expect(frame).toContain("1 - export const value = 1;");
expect(frame).toContain("1 + export const value = 2;");
expect(frame).toContain("2 + export const added = true;");
});
test("exports the documented built-in theme names", () => {
expect(HUNK_DIFF_THEME_NAMES).toEqual(["graphite", "vesper", "midnight", "paper", "ember"]);
});
});