Files
kilocode/packages/kilo-vscode/tests/unit/permission-diff-utils.test.ts
T
Marius ae726cdc45 fix(vscode): show apply_patch diffs before approval (#9691)
* fix(vscode): show apply patch permission diffs

* fix(vscode): avoid caching permission diff patches

* chore: update kilo-vscode visual regression baselines

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-29 15:49:06 +02:00

51 lines
1.6 KiB
TypeScript

import { describe, expect, test } from "bun:test"
import { permissionDiffs } from "../../webview-ui/src/components/chat/permission-diff-utils"
import type { PermissionRequest } from "../../webview-ui/src/types/messages"
function perm(args: PermissionRequest["args"]): PermissionRequest {
return {
id: "perm",
sessionID: "ses",
toolName: "edit",
patterns: ["*"],
always: ["*"],
args,
}
}
describe("permissionDiffs", () => {
test("uses filediff metadata for edit and write permissions", () => {
const diffs = permissionDiffs(
perm({ filediff: { file: "src/app.ts", patch: "patch", additions: 1, deletions: 0 } }),
)
expect(diffs).toEqual([{ file: "src/app.ts", patch: "patch", additions: 1, deletions: 0 }])
})
test("uses apply_patch files metadata", () => {
const diffs = permissionDiffs(
perm({
files: [
{ relativePath: "src/a.ts", type: "update", patch: "a", additions: 1, deletions: 1 },
{ relativePath: "src/b.ts", type: "add", patch: "b", additions: 2, deletions: 0 },
],
}),
)
expect(diffs).toEqual([
{ file: "src/a.ts", patch: "a", additions: 1, deletions: 1 },
{ file: "src/b.ts", patch: "b", additions: 2, deletions: 0 },
])
})
test("falls back to raw diff metadata", () => {
const diffs = permissionDiffs(perm({ filepath: "src/a.ts", diff: "Index: src/a.ts" }))
expect(diffs).toEqual([{ file: "src/a.ts", patch: "Index: src/a.ts", additions: 0, deletions: 0 }])
})
test("returns no diffs for command-only permissions", () => {
expect(permissionDiffs(perm({ command: "git status" }))).toEqual([])
})
})