Files
steipete--codexbar/Tests/CodexBarTests/UsageStorePathDebugTests.swift
2026-07-13 12:22:33 +08:00

79 lines
3.0 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
@MainActor
struct UsageStorePathDebugTests {
@Test
func `refresh path debug info populates snapshot`() async throws {
let suite = "UsageStorePathDebugTests-path"
let defaults = try #require(UserDefaults(suiteName: suite))
defaults.removePersistentDomain(forName: suite)
let configStore = testConfigStore(suiteName: suite)
let settings = SettingsStore(
userDefaults: defaults,
configStore: configStore,
zaiTokenStore: NoopZaiTokenStore())
let store = UsageStore(
fetcher: UsageFetcher(),
browserDetection: BrowserDetection(cacheTTL: 0),
settings: settings,
startupBehavior: .full)
let deadline = Date().addingTimeInterval(2)
while store.pathDebugInfo == .empty, Date() < deadline {
try? await Task.sleep(nanoseconds: 50_000_000)
}
#expect(store.pathDebugInfo != .empty)
#expect(store.pathDebugInfo.effectivePATH.isEmpty == false)
}
@Test
func `deepseek debug log includes selected token account`() async throws {
let suite = "UsageStorePathDebugTests-deepseek-debug-token-account"
let defaults = try #require(UserDefaults(suiteName: suite))
defaults.removePersistentDomain(forName: suite)
let configStore = testConfigStore(suiteName: suite)
let settings = SettingsStore(
userDefaults: defaults,
configStore: configStore,
zaiTokenStore: NoopZaiTokenStore())
settings.addTokenAccount(provider: .deepseek, label: "Primary", token: "sk-deepseek-test")
let store = UsageStore(
fetcher: UsageFetcher(),
browserDetection: BrowserDetection(cacheTTL: 0),
settings: settings,
startupBehavior: .testing,
environmentBase: [:])
let debugLog = await store.debugLog(for: UsageProvider.deepseek)
#expect(debugLog == "DEEPSEEK_API_KEY=present source=settings-token-account")
}
@Test
func `crossmodel debug log includes config backed api key`() async throws {
let suite = "UsageStorePathDebugTests-crossmodel-debug-config-key"
let defaults = try #require(UserDefaults(suiteName: suite))
defaults.removePersistentDomain(forName: suite)
let configStore = testConfigStore(suiteName: suite)
let settings = SettingsStore(
userDefaults: defaults,
configStore: configStore,
zaiTokenStore: NoopZaiTokenStore())
settings.crossModelAPIToken = "cm-config-test"
let store = UsageStore(
fetcher: UsageFetcher(),
browserDetection: BrowserDetection(cacheTTL: 0),
settings: settings,
startupBehavior: .testing,
environmentBase: [:])
let debugLog = await store.debugLog(for: UsageProvider.crossmodel)
#expect(debugLog == "CROSSMODEL_API_KEY=present source=settings-config")
}
}