import CodexBarCoreimport Foundationimport Testing@testable import CodexBar @MainActor@Suitestruct OpenAIWebAccountSwitchTests { @Test func clearsDashboardWhenCodexEmailChanges() { let settings = SettingsStore(zaiTokenStore: NoopZaiTokenStore()) settings.refreshFrequency = .manual let store = UsageStore( fetcher: UsageFetcher(), browserDetection: BrowserDetection(cacheTTL: 0), settings: settings) store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "a@example.com") store.openAIDashboard = OpenAIDashboardSnapshot( signedInEmail: "a@example.com", codeReviewRemainingPercent: 100, creditEvents: [], dailyBreakdown: [], usageBreakdown: [], creditsPurchaseURL: nil, updatedAt: Date()) store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "b@example.com") #expect(store.openAIDashboard == nil) #expect(store.openAIDashboardRequiresLogin == true) #expect(store.openAIDashboardCookieImportStatus?.contains("Codex account changed") == true) } @Test func keepsDashboardWhenCodexEmailStaysSame() { let settings = SettingsStore(zaiTokenStore: NoopZaiTokenStore()) settings.refreshFrequency = .manual let store = UsageStore( fetcher: UsageFetcher(), browserDetection: BrowserDetection(cacheTTL: 0), settings: settings) store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "a@example.com") let dash = OpenAIDashboardSnapshot( signedInEmail: "a@example.com", codeReviewRemainingPercent: 100, creditEvents: [], dailyBreakdown: [], usageBreakdown: [], creditsPurchaseURL: nil, updatedAt: Date()) store.openAIDashboard = dash store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "a@example.com") #expect(store.openAIDashboard == dash) }}
import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
@MainActor
@Suite
struct OpenAIWebAccountSwitchTests {
@Test
func clearsDashboardWhenCodexEmailChanges() {
let settings = SettingsStore(zaiTokenStore: NoopZaiTokenStore())
settings.refreshFrequency = .manual
let store = UsageStore(
fetcher: UsageFetcher(),
browserDetection: BrowserDetection(cacheTTL: 0),
settings: settings)
store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "a@example.com")
store.openAIDashboard = OpenAIDashboardSnapshot(
signedInEmail: "a@example.com",
codeReviewRemainingPercent: 100,
creditEvents: [],
dailyBreakdown: [],
usageBreakdown: [],
creditsPurchaseURL: nil,
updatedAt: Date())
store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "b@example.com")
#expect(store.openAIDashboard == nil)
#expect(store.openAIDashboardRequiresLogin == true)
#expect(store.openAIDashboardCookieImportStatus?.contains("Codex account changed") == true)
}
@Test
func keepsDashboardWhenCodexEmailStaysSame() {
let settings = SettingsStore(zaiTokenStore: NoopZaiTokenStore())
settings.refreshFrequency = .manual
let store = UsageStore(
fetcher: UsageFetcher(),
browserDetection: BrowserDetection(cacheTTL: 0),
settings: settings)
store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "a@example.com")
let dash = OpenAIDashboardSnapshot(
signedInEmail: "a@example.com",
codeReviewRemainingPercent: 100,
creditEvents: [],
dailyBreakdown: [],
usageBreakdown: [],
creditsPurchaseURL: nil,
updatedAt: Date())
store.openAIDashboard = dash
store.handleOpenAIWebTargetEmailChangeIfNeeded(targetEmail: "a@example.com")
#expect(store.openAIDashboard == dash)
}
}