opencode-config/.opencode/telegram/tests/config.test.ts

54 lines
No EOL
1.7 KiB
TypeScript

import { describe, it, expect, beforeEach, afterEach } from "vitest"
import { loadConfig } from "../src/config.ts"
describe("loadConfig", () => {
let savedToken: string | undefined
let savedChatId: string | undefined
beforeEach(() => {
savedToken = process.env.TELEGRAM_BOT_TOKEN
savedChatId = process.env.TELEGRAM_CHAT_ID
delete process.env.TELEGRAM_BOT_TOKEN
delete process.env.TELEGRAM_CHAT_ID
})
afterEach(() => {
if (savedToken === undefined) {
delete process.env.TELEGRAM_BOT_TOKEN
} else {
process.env.TELEGRAM_BOT_TOKEN = savedToken
}
if (savedChatId === undefined) {
delete process.env.TELEGRAM_CHAT_ID
} else {
process.env.TELEGRAM_CHAT_ID = savedChatId
}
})
it("returns {token, chatId} when both env vars present", () => {
process.env.TELEGRAM_BOT_TOKEN = "tok"
process.env.TELEGRAM_CHAT_ID = "cid"
expect(loadConfig()).toEqual({ token: "tok", chatId: "cid" })
})
it("throws when token missing", () => {
process.env.TELEGRAM_CHAT_ID = "cid"
expect(() => loadConfig()).toThrow(/TELEGRAM_BOT_TOKEN/)
})
it("throws when chatId missing without override", () => {
process.env.TELEGRAM_BOT_TOKEN = "tok"
expect(() => loadConfig()).toThrow(/chat_id/)
})
it("override chatId takes priority over env", () => {
process.env.TELEGRAM_BOT_TOKEN = "tok"
process.env.TELEGRAM_CHAT_ID = "env-id"
expect(loadConfig({ chatId: "argv-id" })).toEqual({ token: "tok", chatId: "argv-id" })
})
it("override chatId works even when env chatId missing", () => {
process.env.TELEGRAM_BOT_TOKEN = "tok"
expect(loadConfig({ chatId: "argv-id" })).toEqual({ token: "tok", chatId: "argv-id" })
})
})