import { describe, expect, it } from "vitest";import { diffLineClassName, diffLinePrefix, gitDiffHeaderTitle, parseUnifiedDiff,} from "./git-diff-panel-model"; describe("git diff panel model", () => { it("parses unified diff files with additions, deletions, and line numbers", () => { const files = parseUnifiedDiff(`diff --git a/a.ts b/a.ts--- a/a.ts+++ b/a.ts@@ -2,2 +2,3 @@ keep-old+new+extra`); expect(files).toHaveLength(1); expect(files[0]).toMatchObject({ path: "a.ts", additions: 2, deletions: 1 }); expect(files[0]?.lines.map((line) => [line.kind, line.oldLine, line.newLine])).toEqual([ ["meta", undefined, undefined], ["meta", undefined, undefined], ["meta", undefined, undefined], ["context", 2, 2], ["del", 3, undefined], ["add", undefined, 3], ["add", undefined, 4], ]); }); it("resolves header, row classes, and visible prefixes", () => { expect(gitDiffHeaderTitle({ branch: "main" }, "/repo")).toBe("main"); expect(gitDiffHeaderTitle(null, "/repo")).toBe("Working tree diff"); expect(gitDiffHeaderTitle(null, null)).toBe("No directory"); expect(diffLineClassName("add")).toContain("emerald"); expect(diffLinePrefix("del")).toBe("-"); expect(diffLinePrefix("meta")).toBe(""); });});
import { describe, expect, it } from "vitest";
import {
diffLineClassName,
diffLinePrefix,
gitDiffHeaderTitle,
parseUnifiedDiff,
} from "./git-diff-panel-model";
describe("git diff panel model", () => {
it("parses unified diff files with additions, deletions, and line numbers", () => {
const files = parseUnifiedDiff(`diff --git a/a.ts b/a.ts
--- a/a.ts
+++ b/a.ts
@@ -2,2 +2,3 @@
keep
-old
+new
+extra`);
expect(files).toHaveLength(1);
expect(files[0]).toMatchObject({ path: "a.ts", additions: 2, deletions: 1 });
expect(files[0]?.lines.map((line) => [line.kind, line.oldLine, line.newLine])).toEqual([
["meta", undefined, undefined],
["meta", undefined, undefined],
["meta", undefined, undefined],
["context", 2, 2],
["del", 3, undefined],
["add", undefined, 3],
["add", undefined, 4],
]);
});
it("resolves header, row classes, and visible prefixes", () => {
expect(gitDiffHeaderTitle({ branch: "main" }, "/repo")).toBe("main");
expect(gitDiffHeaderTitle(null, "/repo")).toBe("Working tree diff");
expect(gitDiffHeaderTitle(null, null)).toBe("No directory");
expect(diffLineClassName("add")).toContain("emerald");
expect(diffLinePrefix("del")).toBe("-");
expect(diffLinePrefix("meta")).toBe("");
});
});