Files
steipete--codexbar/Tests/CodexBarTests/PreferencesSelectionTests.swift
2026-07-13 12:22:33 +08:00

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))
}
}