|
|
@@ -0,0 +1,42 @@
|
|
|
+import { describe, expect, test } from "bun:test"
|
|
|
+import type { SnapshotFileDiff } from "@opencode-ai/sdk/v2"
|
|
|
+import { uniqueSummaryDiffs } from "./summary-diffs"
|
|
|
+
|
|
|
+const diff = (file: string, additions: number) =>
|
|
|
+ ({
|
|
|
+ file,
|
|
|
+ additions,
|
|
|
+ deletions: 0,
|
|
|
+ }) satisfies SnapshotFileDiff
|
|
|
+
|
|
|
+describe("uniqueSummaryDiffs", () => {
|
|
|
+ test("drops entries without files and preserves unique input", () => {
|
|
|
+ const alpha = diff("alpha.ts", 1)
|
|
|
+ const beta = diff("beta.ts", 1)
|
|
|
+ const invalid = { additions: 1, deletions: 0 } satisfies SnapshotFileDiff
|
|
|
+
|
|
|
+ expect(uniqueSummaryDiffs(undefined)).toEqual([])
|
|
|
+ expect(uniqueSummaryDiffs([])).toEqual([])
|
|
|
+ expect(uniqueSummaryDiffs([invalid])).toEqual([])
|
|
|
+
|
|
|
+ const result = uniqueSummaryDiffs([alpha, invalid, beta])
|
|
|
+ expect(result).toEqual([alpha, beta])
|
|
|
+ expect(result[0]).toBe(alpha)
|
|
|
+ expect(result[1]).toBe(beta)
|
|
|
+ })
|
|
|
+
|
|
|
+ test("keeps the last diff per file in the legacy display order", () => {
|
|
|
+ const oldAlpha = diff("alpha.ts", 1)
|
|
|
+ const oldBeta = diff("beta.ts", 1)
|
|
|
+ const newAlpha = diff("alpha.ts", 2)
|
|
|
+ const charlie = diff("charlie.ts", 1)
|
|
|
+ const newBeta = diff("beta.ts", 2)
|
|
|
+
|
|
|
+ const result = uniqueSummaryDiffs([oldAlpha, oldBeta, newAlpha, charlie, newBeta])
|
|
|
+
|
|
|
+ expect(result).toEqual([newAlpha, charlie, newBeta])
|
|
|
+ expect(result[0]).toBe(newAlpha)
|
|
|
+ expect(result[1]).toBe(charlie)
|
|
|
+ expect(result[2]).toBe(newBeta)
|
|
|
+ })
|
|
|
+})
|