Files
Kilo-Org_kilocode/packages/opencode/test/kilocode/session-import-service.test.ts
T
Imanol Maiztegui 251ed67347 refactor(opencode): update internal import paths to use barrel re-exports
Migrate all deep import paths across source and test files to
reference barrel index modules instead of direct file paths. This
covers config, provider, storage, util, tool, lsp, project, and
installation modules. Also moves provider promise helpers out of the
namespace block, switches Clipboard to namespace import style, fixes a
duplicate Filesystem import, removes the deleted paste-summary test,
and corrects snapshot cache typing and indentation.
2026-04-22 07:24:09 +02:00

115 lines
2.7 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test"
import { Database } from "../../src/storage"
import { SessionImportService } from "../../src/kilocode/session-import/service"
let spy: ReturnType<typeof spyOn>
const db = {
select() {
return {
from() {
return {
where() {
return {
get() {
return rows.session
},
}
},
}
},
}
},
delete() {
return {
where() {
return {
run() {
deletes.push("session")
rows.session = undefined
rows.messages = []
rows.parts = []
},
}
},
}
},
insert() {
return {
values(input: Record<string, unknown>) {
return {
onConflictDoUpdate() {
return {
run() {
rows.session = { ...input }
},
}
},
run() {
rows.session = { ...input }
},
}
},
}
},
}
const rows = {
session: undefined as Record<string, unknown> | undefined,
messages: [] as string[],
parts: [] as string[],
}
const deletes: string[] = []
function input(force?: boolean) {
return {
id: "ses_migrated_test",
projectID: "proj_test",
slug: "legacy-task",
directory: "/workspace/testing",
title: force ? "Reimported task" : "Legacy task",
version: "v2",
timeCreated: 1,
timeUpdated: 1,
...(force ? { force: true } : {}),
}
}
describe("SessionImportService.session", () => {
beforeEach(() => {
spy = spyOn(Database, "use").mockImplementation((fn: any) => fn(db))
deletes.length = 0
rows.session = undefined
rows.messages = []
rows.parts = []
})
afterEach(() => {
spy.mockRestore()
})
test("returns skipped when the session already exists and force is false", async () => {
rows.session = { id: "ses_migrated_test", title: "Legacy task" }
const result = await SessionImportService.session(input())
expect(result).toEqual({ ok: true, id: "ses_migrated_test", skipped: true })
expect(deletes).toEqual([])
})
test("deletes and recreates the session when force is true", async () => {
rows.session = { id: "ses_migrated_test", title: "Legacy task" }
rows.messages = ["msg_test"]
rows.parts = ["prt_test"]
const result = await SessionImportService.session(input(true))
expect(result).toEqual({ ok: true, id: "ses_migrated_test" })
expect(deletes).toEqual(["session"])
expect(rows.messages).toEqual([])
expect(rows.parts).toEqual([])
expect(rows.session).toMatchObject({ title: "Reimported task" })
})
})