WIP
This commit is contained in:
100
tests/clipboredtests/AppDelegateTests.swift
Normal file
100
tests/clipboredtests/AppDelegateTests.swift
Normal file
@@ -0,0 +1,100 @@
|
||||
import AppKit
|
||||
import XCTest
|
||||
@testable import ClipBored
|
||||
|
||||
final class AppDelegateTests: XCTestCase {
|
||||
func testStatusItemMenuRoutingSeparatesLeftAndRightClick() {
|
||||
XCTAssertFalse(AppDelegate.shouldOpenStatusMenu(eventType: .leftMouseUp, modifierFlags: []))
|
||||
XCTAssertTrue(AppDelegate.shouldOpenStatusMenu(eventType: .rightMouseUp, modifierFlags: []))
|
||||
XCTAssertTrue(AppDelegate.shouldOpenStatusMenu(eventType: .leftMouseUp, modifierFlags: .control))
|
||||
XCTAssertTrue(AppDelegate.shouldOpenStatusMenu(eventType: .otherMouseUp, modifierFlags: []))
|
||||
XCTAssertFalse(AppDelegate.shouldOpenStatusMenu(eventType: .leftMouseDragged, modifierFlags: .control))
|
||||
}
|
||||
|
||||
func testStatusMenuIncludesStateRowsAndBoundedActions() {
|
||||
let settingsTitle = "Settings\u{2026}"
|
||||
let presentation = AppDelegate.statusMenuPresentation(
|
||||
historyCount: 42,
|
||||
isCapturePaused: false,
|
||||
captureStatus: "Captured text from Safari.",
|
||||
pasteStatus: "",
|
||||
shortcutStatus: "",
|
||||
accessibilityStatus: "",
|
||||
launchAtLoginStatus: ""
|
||||
)
|
||||
let menu = AppDelegate.makeStatusMenu(
|
||||
presentation: presentation,
|
||||
isCapturePaused: false,
|
||||
openShortcut: AppConfiguration.defaultOpenShortcut,
|
||||
settingsShortcut: AppConfiguration.defaultSettingsShortcut,
|
||||
target: nil
|
||||
)
|
||||
|
||||
XCTAssertEqual(
|
||||
menu.items.map { $0.isSeparatorItem ? "-" : $0.title },
|
||||
[
|
||||
"ClipBored",
|
||||
"Capture Running - 42 clips",
|
||||
"Captured text from Safari.",
|
||||
"-",
|
||||
"Show Clipboard",
|
||||
settingsTitle,
|
||||
"-",
|
||||
"Pause Capture",
|
||||
"-",
|
||||
"Quit ClipBored"
|
||||
]
|
||||
)
|
||||
|
||||
let showClipboard = menu.items.first { $0.title == "Show Clipboard" }
|
||||
XCTAssertEqual(showClipboard?.keyEquivalent, "v")
|
||||
XCTAssertTrue(showClipboard?.keyEquivalentModifierMask.contains(.command) == true)
|
||||
XCTAssertTrue(showClipboard?.keyEquivalentModifierMask.contains(.option) == true)
|
||||
|
||||
let settings = menu.items.first { $0.title == settingsTitle }
|
||||
XCTAssertEqual(settings?.keyEquivalent, ",")
|
||||
XCTAssertTrue(settings?.keyEquivalentModifierMask.contains(.command) == true)
|
||||
}
|
||||
|
||||
func testStatusMenuPausedStateTakesPriorityOverOlderCaptureStatus() {
|
||||
let presentation = AppDelegate.statusMenuPresentation(
|
||||
historyCount: 1,
|
||||
isCapturePaused: true,
|
||||
captureStatus: "Captured link from Safari.",
|
||||
pasteStatus: "Copied",
|
||||
shortcutStatus: "",
|
||||
accessibilityStatus: "",
|
||||
launchAtLoginStatus: ""
|
||||
)
|
||||
let menu = AppDelegate.makeStatusMenu(
|
||||
presentation: presentation,
|
||||
isCapturePaused: true,
|
||||
openShortcut: AppConfiguration.defaultOpenShortcut,
|
||||
settingsShortcut: AppConfiguration.defaultSettingsShortcut,
|
||||
target: nil
|
||||
)
|
||||
|
||||
XCTAssertEqual(presentation.summary, "Capture Paused - 1 clip")
|
||||
XCTAssertEqual(presentation.detail, "Capture is paused.")
|
||||
XCTAssertEqual(menu.items.first { $0.title == "Resume Capture" }?.state, .on)
|
||||
XCTAssertNil(menu.items.first { $0.title == "Pause Capture" })
|
||||
}
|
||||
|
||||
func testStatusMenuPresentationTruncatesLongStatusText() {
|
||||
let presentation = AppDelegate.statusMenuPresentation(
|
||||
historyCount: 2000,
|
||||
isCapturePaused: false,
|
||||
captureStatus: "Skipped:\n" + String(repeating: "A very long ignored source application name ", count: 4),
|
||||
pasteStatus: "",
|
||||
shortcutStatus: "",
|
||||
accessibilityStatus: "",
|
||||
launchAtLoginStatus: ""
|
||||
)
|
||||
|
||||
XCTAssertEqual(presentation.summary, "Capture Running - 2000 clips")
|
||||
XCTAssertNotNil(presentation.detail)
|
||||
XCTAssertLessThanOrEqual(presentation.detail?.count ?? 0, 68)
|
||||
XCTAssertTrue(presentation.detail?.hasSuffix("...") == true)
|
||||
XCTAssertFalse(presentation.detail?.contains("\n") == true)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user