46 lines
1.5 KiB
Swift
46 lines
1.5 KiB
Swift
import CodexBarCore
|
|
import Foundation
|
|
import Testing
|
|
@testable import CodexBar
|
|
|
|
@MainActor
|
|
struct PreferencesSelectionTests {
|
|
@Test
|
|
func `pane persistence tokens round-trip`() {
|
|
let panes: [SettingsPane] = [
|
|
.general,
|
|
.notifications,
|
|
.menuBar,
|
|
.menu,
|
|
.advanced,
|
|
.about,
|
|
.debug,
|
|
.provider(.claude),
|
|
]
|
|
for pane in panes {
|
|
#expect(SettingsPane(persistenceToken: pane.persistenceToken) == pane)
|
|
}
|
|
#expect(SettingsPane(persistenceToken: "provider:definitely-not-a-provider") == nil)
|
|
#expect(SettingsPane(persistenceToken: "") == nil)
|
|
}
|
|
|
|
@Test
|
|
func `legacy display token restores the menu bar pane`() {
|
|
#expect(SettingsPane(persistenceToken: "display") == .menuBar)
|
|
}
|
|
|
|
@Test
|
|
func `selection restores persisted pane and saves changes`() throws {
|
|
let suite = "PreferencesSelectionTests-\(UUID().uuidString)"
|
|
let defaults = try #require(UserDefaults(suiteName: suite))
|
|
defer { defaults.removePersistentDomain(forName: suite) }
|
|
|
|
#expect(PreferencesSelection(userDefaults: defaults).pane == .general)
|
|
|
|
let selection = PreferencesSelection(userDefaults: defaults)
|
|
selection.pane = .provider(.codex)
|
|
#expect(defaults.string(forKey: PreferencesSelection.paneDefaultsKey) == "provider:codex")
|
|
#expect(PreferencesSelection(userDefaults: defaults).pane == .provider(.codex))
|
|
}
|
|
}
|