WIP: add Dock visibility setting
This commit is contained in:
@@ -3,6 +3,46 @@ import XCTest
|
||||
@testable import ClipBored
|
||||
|
||||
final class AppDelegateTests: XCTestCase {
|
||||
func testPresentationPlanMapsDockPreferenceToActivationPolicy() {
|
||||
let dockless = AppDelegate.presentationPlan(
|
||||
showMenuBarIcon: true,
|
||||
showDockIcon: false,
|
||||
changedSurface: nil
|
||||
)
|
||||
XCTAssertTrue(dockless.showMenuBarIcon)
|
||||
XCTAssertFalse(dockless.showDockIcon)
|
||||
XCTAssertEqual(dockless.activationPolicy, .accessory)
|
||||
|
||||
let dockVisible = AppDelegate.presentationPlan(
|
||||
showMenuBarIcon: true,
|
||||
showDockIcon: true,
|
||||
changedSurface: nil
|
||||
)
|
||||
XCTAssertTrue(dockVisible.showMenuBarIcon)
|
||||
XCTAssertTrue(dockVisible.showDockIcon)
|
||||
XCTAssertEqual(dockVisible.activationPolicy, .regular)
|
||||
}
|
||||
|
||||
func testPresentationPlanKeepsOneVisibleEntryPoint() {
|
||||
let hidingMenuBar = AppDelegate.presentationPlan(
|
||||
showMenuBarIcon: false,
|
||||
showDockIcon: false,
|
||||
changedSurface: .menuBar
|
||||
)
|
||||
XCTAssertFalse(hidingMenuBar.showMenuBarIcon)
|
||||
XCTAssertTrue(hidingMenuBar.showDockIcon)
|
||||
XCTAssertEqual(hidingMenuBar.activationPolicy, .regular)
|
||||
|
||||
let hidingDock = AppDelegate.presentationPlan(
|
||||
showMenuBarIcon: false,
|
||||
showDockIcon: false,
|
||||
changedSurface: .dock
|
||||
)
|
||||
XCTAssertTrue(hidingDock.showMenuBarIcon)
|
||||
XCTAssertFalse(hidingDock.showDockIcon)
|
||||
XCTAssertEqual(hidingDock.activationPolicy, .accessory)
|
||||
}
|
||||
|
||||
func testStatusItemMenuRoutingSeparatesLeftAndRightClick() {
|
||||
XCTAssertFalse(AppDelegate.shouldOpenStatusMenu(eventType: .leftMouseUp, modifierFlags: []))
|
||||
XCTAssertTrue(AppDelegate.shouldOpenStatusMenu(eventType: .rightMouseUp, modifierFlags: []))
|
||||
|
||||
28
tests/clipboredtests/SettingsModelTests.swift
Normal file
28
tests/clipboredtests/SettingsModelTests.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
import XCTest
|
||||
@testable import ClipBored
|
||||
|
||||
final class SettingsModelTests: XCTestCase {
|
||||
func testShowDockIconPersistsAndNotifies() {
|
||||
let suiteName = "com.clipbored.settingsmodel.\(UUID().uuidString)"
|
||||
let defaults = UserDefaults(suiteName: suiteName)!
|
||||
defer {
|
||||
defaults.removePersistentDomain(forName: suiteName)
|
||||
}
|
||||
let settings = SettingsModel(defaults: defaults)
|
||||
var changes: [SettingsModel.Change] = []
|
||||
settings.observe { changes.append($0) }
|
||||
|
||||
XCTAssertFalse(settings.showDockIcon)
|
||||
|
||||
settings.showDockIcon = true
|
||||
|
||||
XCTAssertTrue(defaults.bool(forKey: SettingsModel.Keys.showDockIcon))
|
||||
XCTAssertEqual(changes.count, 1)
|
||||
guard case .showDockIcon = changes.first else {
|
||||
return XCTFail("Expected showDockIcon change notification")
|
||||
}
|
||||
|
||||
let restored = SettingsModel(defaults: defaults)
|
||||
XCTAssertTrue(restored.showDockIcon)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user