84 lines
2.5 KiB
TypeScript
84 lines
2.5 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, mock, spyOn } from "bun:test"
|
|
import * as configManager from "./config-manager"
|
|
import { runCliInstaller } from "./cli-installer"
|
|
import type { InstallArgs } from "./types"
|
|
|
|
describe("runCliInstaller", () => {
|
|
const mockConsoleLog = mock(() => {})
|
|
const mockConsoleError = mock(() => {})
|
|
const originalConsoleLog = console.log
|
|
const originalConsoleError = console.error
|
|
|
|
beforeEach(() => {
|
|
console.log = mockConsoleLog
|
|
console.error = mockConsoleError
|
|
mockConsoleLog.mockClear()
|
|
mockConsoleError.mockClear()
|
|
})
|
|
|
|
afterEach(() => {
|
|
console.log = originalConsoleLog
|
|
console.error = originalConsoleError
|
|
})
|
|
|
|
it("runs auth and provider setup steps when openai or copilot are enabled without gemini", async () => {
|
|
//#given
|
|
const addAuthPluginsSpy = spyOn(configManager, "addAuthPlugins").mockResolvedValue({
|
|
success: true,
|
|
configPath: "/tmp/opencode.jsonc",
|
|
})
|
|
const addProviderConfigSpy = spyOn(configManager, "addProviderConfig").mockReturnValue({
|
|
success: true,
|
|
configPath: "/tmp/opencode.jsonc",
|
|
})
|
|
const restoreSpies = [
|
|
addAuthPluginsSpy,
|
|
addProviderConfigSpy,
|
|
spyOn(configManager, "detectCurrentConfig").mockReturnValue({
|
|
isInstalled: false,
|
|
hasClaude: false,
|
|
isMax20: false,
|
|
hasOpenAI: false,
|
|
hasGemini: false,
|
|
hasCopilot: false,
|
|
hasOpencodeZen: false,
|
|
hasZaiCodingPlan: false,
|
|
hasKimiForCoding: false,
|
|
}),
|
|
spyOn(configManager, "isOpenCodeInstalled").mockResolvedValue(true),
|
|
spyOn(configManager, "getOpenCodeVersion").mockResolvedValue("1.0.200"),
|
|
spyOn(configManager, "addPluginToOpenCodeConfig").mockResolvedValue({
|
|
success: true,
|
|
configPath: "/tmp/opencode.jsonc",
|
|
}),
|
|
spyOn(configManager, "writeOmoConfig").mockReturnValue({
|
|
success: true,
|
|
configPath: "/tmp/oh-my-opencode.jsonc",
|
|
}),
|
|
]
|
|
|
|
const args: InstallArgs = {
|
|
tui: false,
|
|
claude: "no",
|
|
openai: "yes",
|
|
gemini: "no",
|
|
copilot: "yes",
|
|
opencodeZen: "no",
|
|
zaiCodingPlan: "no",
|
|
kimiForCoding: "no",
|
|
}
|
|
|
|
//#when
|
|
const result = await runCliInstaller(args, "3.4.0")
|
|
|
|
//#then
|
|
expect(result).toBe(0)
|
|
expect(addAuthPluginsSpy).toHaveBeenCalledTimes(1)
|
|
expect(addProviderConfigSpy).toHaveBeenCalledTimes(1)
|
|
|
|
for (const spy of restoreSpies) {
|
|
spy.mockRestore()
|
|
}
|
|
})
|
|
})
|