test: verify provider setup runs for openai/copilot without gemini
This commit is contained in:
parent
abfab1a78a
commit
67efe2d7af
83
src/cli/cli-installer.test.ts
Normal file
83
src/cli/cli-installer.test.ts
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
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()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
Loading…
x
Reference in New Issue
Block a user