Files
kilocode/packages/kilo-vscode/tests/unit/session-errors.test.ts
T

48 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "bun:test"
import { errorIDs, visibleError } from "../../webview-ui/src/context/session-errors"
import type { Message } from "../../webview-ui/src/types/messages"
const base = {
sessionID: "session",
createdAt: "2026-01-01T00:00:00.000Z",
time: { created: 1 },
}
const assistant = (id: string, error?: Message["error"]): Message => ({
...base,
id,
role: "assistant",
error,
})
describe("errorIDs", () => {
it("returns only message IDs with errors", () => {
const messages = [
assistant("message_1"),
assistant("message_2", { name: "ProviderError" }),
assistant("message_3", { name: "RateLimitError" }),
]
expect(errorIDs(messages)).toEqual(["message_2", "message_3"])
})
})
describe("visibleError", () => {
it("hides only selected error messages", () => {
const hidden = new Set(["message_2"])
const messages = [
assistant("message_1"),
assistant("message_2", { name: "ProviderError" }),
assistant("message_3", { name: "RateLimitError" }),
]
expect(visibleError(messages, (id) => hidden.has(id))).toEqual({ name: "RateLimitError" })
})
it("ignores aborted assistant messages", () => {
const messages = [assistant("message_1", { name: "MessageAbortedError" })]
expect(visibleError(messages, () => false)).toBeUndefined()
})
})