import XCTest @testable import FocusFixer final class PreferencesTests: XCTestCase { private var suiteName: String! private var defaults: UserDefaults! private var preferences: Preferences! override func setUp() { super.setUp() suiteName = "com.local.focusfixer.tests.\(UUID().uuidString)" defaults = UserDefaults(suiteName: suiteName) preferences = Preferences(defaults: defaults) } override func tearDown() { defaults.removePersistentDomain(forName: suiteName) preferences = nil defaults = nil suiteName = nil super.tearDown() } func testDefaultsToEnabled() { XCTAssertTrue(preferences.isEnabled) } func testDefaultDebounceIntervalIs150ms() { XCTAssertEqual(preferences.debounceInterval, 0.15, accuracy: 0.0001) } func testExclusionListMatching() { XCTAssertFalse(preferences.isExcluded(bundleID: "com.apple.finder")) preferences.setExcluded(true, bundleID: "com.apple.finder") XCTAssertTrue(preferences.isExcluded(bundleID: "com.apple.finder")) preferences.setExcluded(false, bundleID: "com.apple.finder") XCTAssertFalse(preferences.isExcluded(bundleID: "com.apple.finder")) } func testExclusionListRequiresExactMatch() { preferences.setExcluded(true, bundleID: "com.local.focusfixer.helper") XCTAssertFalse(preferences.isExcluded(bundleID: "com.local.focusfixer")) XCTAssertTrue(preferences.isExcluded(bundleID: "com.local.focusfixer.helper")) } }