66 lines
2.2 KiB
Swift
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 {}
|
|
}
|