Files
2026-07-13 12:22:33 +08:00

66 lines
2.2 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
@MainActor
struct ZaiAvailabilityTests {
@Test
func `enables zai when token exists in store`() throws {
let suite = "ZaiAvailabilityTests-token"
let defaults = try #require(UserDefaults(suiteName: suite))
defaults.removePersistentDomain(forName: suite)
let configStore = testConfigStore(suiteName: suite)
let tokenStore = StubZaiTokenStore(token: "zai-test-token")
let settings = SettingsStore(
userDefaults: defaults,
configStore: configStore,
zaiTokenStore: tokenStore)
let store = UsageStore(
fetcher: UsageFetcher(environment: [:]),
browserDetection: BrowserDetection(cacheTTL: 0),
settings: settings)
let metadata = try #require(ProviderRegistry.shared.metadata[.zai])
settings.setProviderEnabled(provider: .zai, metadata: metadata, enabled: true)
#expect(store.isEnabled(.zai) == true)
#expect(settings.zaiAPIToken == "zai-test-token")
}
@Test
func `enables zai when token exists in token accounts`() throws {
let suite = "ZaiAvailabilityTests-token-accounts"
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(environment: [:]),
browserDetection: BrowserDetection(cacheTTL: 0),
settings: settings)
settings.addTokenAccount(provider: .zai, label: "primary", token: "zai-token-account")
let metadata = try #require(ProviderRegistry.shared.metadata[.zai])
settings.setProviderEnabled(provider: .zai, metadata: metadata, enabled: true)
#expect(store.isEnabled(.zai) == true)
}
}
private struct StubZaiTokenStore: ZaiTokenStoring {
let token: String?
func loadToken() throws -> String? {
self.token
}
func storeToken(_: String?) throws {}
}