mirror of
https://github.com/anomalyco/opencode.git
synced 2026-04-24 14:55:19 +00:00
72 lines
2.0 KiB
TypeScript
72 lines
2.0 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import { getAdaptor, registerAdaptor } from "../../src/control-plane/adaptors"
|
|
import { ProjectID } from "../../src/project/schema"
|
|
import type { WorkspaceInfo } from "../../src/control-plane/types"
|
|
|
|
function info(projectID: WorkspaceInfo["projectID"], type: string): WorkspaceInfo {
|
|
return {
|
|
id: "workspace-test" as WorkspaceInfo["id"],
|
|
type,
|
|
name: "workspace-test",
|
|
branch: null,
|
|
directory: null,
|
|
extra: null,
|
|
projectID,
|
|
}
|
|
}
|
|
|
|
function adaptor(dir: string) {
|
|
return {
|
|
name: dir,
|
|
description: dir,
|
|
configure(input: WorkspaceInfo) {
|
|
return input
|
|
},
|
|
async create() {},
|
|
async remove() {},
|
|
target() {
|
|
return {
|
|
type: "local" as const,
|
|
directory: dir,
|
|
}
|
|
},
|
|
}
|
|
}
|
|
|
|
describe("control-plane/adaptors", () => {
|
|
test("isolates custom adaptors by project", async () => {
|
|
const type = `demo-${Math.random().toString(36).slice(2)}`
|
|
const one = ProjectID.make(`project-${Math.random().toString(36).slice(2)}`)
|
|
const two = ProjectID.make(`project-${Math.random().toString(36).slice(2)}`)
|
|
registerAdaptor(one, type, adaptor("/one"))
|
|
registerAdaptor(two, type, adaptor("/two"))
|
|
|
|
expect(await (await getAdaptor(one, type)).target(info(one, type))).toEqual({
|
|
type: "local",
|
|
directory: "/one",
|
|
})
|
|
expect(await (await getAdaptor(two, type)).target(info(two, type))).toEqual({
|
|
type: "local",
|
|
directory: "/two",
|
|
})
|
|
})
|
|
|
|
test("latest install wins within a project", async () => {
|
|
const type = `demo-${Math.random().toString(36).slice(2)}`
|
|
const id = ProjectID.make(`project-${Math.random().toString(36).slice(2)}`)
|
|
registerAdaptor(id, type, adaptor("/one"))
|
|
|
|
expect(await (await getAdaptor(id, type)).target(info(id, type))).toEqual({
|
|
type: "local",
|
|
directory: "/one",
|
|
})
|
|
|
|
registerAdaptor(id, type, adaptor("/two"))
|
|
|
|
expect(await (await getAdaptor(id, type)).target(info(id, type))).toEqual({
|
|
type: "local",
|
|
directory: "/two",
|
|
})
|
|
})
|
|
})
|