82 lines · 3.3 KB · Swift
RawDownload
import CodexBarCoreimport Foundationimport Testing@testable import CodexBar @MainActorstruct FactoryProviderImplementationTests {    @Test    func `extra usage balance respects optional usage setting`() throws {        let snapshot = UsageSnapshot(            primary: nil,            secondary: nil,            providerCost: ProviderCostSnapshot(                used: 25,                limit: 0,                currencyCode: "USD",                period: "Extra usage balance",                updatedAt: Date(timeIntervalSince1970: 0)),            updatedAt: Date(timeIntervalSince1970: 0))         var hiddenEntries: [ProviderMenuEntry] = []        let hiddenContext = try Self.context(snapshot: snapshot, showOptionalUsage: false)        FactoryProviderImplementation().appendUsageMenuEntries(            context: hiddenContext,            entries: &hiddenEntries)        #expect(hiddenEntries.isEmpty)         var visibleEntries: [ProviderMenuEntry] = []        let visibleContext = try Self.context(snapshot: snapshot, showOptionalUsage: true)        FactoryProviderImplementation().appendUsageMenuEntries(            context: visibleContext,            entries: &visibleEntries)         guard case let .text(title, style) = try #require(visibleEntries.first) else {            Issue.record("Expected Factory extra usage balance menu text")            return        }        #expect(title == "Extra usage balance: $25.00")        #expect(style == .primary)    }     private static func context(        snapshot: UsageSnapshot,        showOptionalUsage: Bool) throws -> ProviderMenuUsageContext    {        let suite = "FactoryProviderImplementationTests-\(UUID().uuidString)"        let defaults = try #require(UserDefaults(suiteName: suite))        defaults.removePersistentDomain(forName: suite)        let settings = SettingsStore(            userDefaults: defaults,            configStore: testConfigStore(suiteName: suite),            zaiTokenStore: NoopZaiTokenStore(),            syntheticTokenStore: NoopSyntheticTokenStore(),            codexCookieStore: InMemoryCookieHeaderStore(),            claudeCookieStore: InMemoryCookieHeaderStore(),            cursorCookieStore: InMemoryCookieHeaderStore(),            opencodeCookieStore: InMemoryCookieHeaderStore(),            factoryCookieStore: InMemoryCookieHeaderStore(),            minimaxCookieStore: InMemoryMiniMaxCookieStore(),            minimaxAPITokenStore: InMemoryMiniMaxAPITokenStore(),            kimiTokenStore: InMemoryKimiTokenStore(),            kimiK2TokenStore: InMemoryKimiK2TokenStore(),            augmentCookieStore: InMemoryCookieHeaderStore(),            ampCookieStore: InMemoryCookieHeaderStore(),            copilotTokenStore: InMemoryCopilotTokenStore(),            tokenAccountStore: InMemoryTokenAccountStore())        settings.showOptionalCreditsAndExtraUsage = showOptionalUsage        let store = UsageStore(            fetcher: UsageFetcher(environment: [:]),            browserDetection: BrowserDetection(cacheTTL: 0),            settings: settings,            startupBehavior: .testing,            environmentBase: [:])         return ProviderMenuUsageContext(            provider: .factory,            store: store,            settings: settings,            metadata: FactoryProviderDescriptor.descriptor.metadata,            snapshot: snapshot)    }}