Slim down app and test suite
This commit is contained in:
117
tests/clipboredtests/SettingsPresentationTests.swift
Normal file
117
tests/clipboredtests/SettingsPresentationTests.swift
Normal file
@@ -0,0 +1,117 @@
|
||||
import AppKit
|
||||
import XCTest
|
||||
@testable import ClipBored
|
||||
|
||||
final class SettingsPresentationTests: XCTestCase {
|
||||
func testPasteAndDataStatusColors() {
|
||||
let pasteCases: [(String, NSColor)] = [
|
||||
("", .secondaryLabelColor),
|
||||
("Pasted", .systemGreen),
|
||||
("Copied. Grant Accessibility access to paste automatically.", .systemOrange),
|
||||
("Could not write item to clipboard.", .systemRed)
|
||||
]
|
||||
for (message, color) in pasteCases {
|
||||
XCTAssertEqual(SettingsWindowController.pasteStatusPresentation(storedStatus: message).textColor, color)
|
||||
}
|
||||
|
||||
let dataCases: [(String, NSColor)] = [
|
||||
("", .secondaryLabelColor),
|
||||
("Exported 3 clips.", .systemGreen),
|
||||
("Imported 3 clips. Skipped 1 clip.", .systemOrange),
|
||||
("The archive couldn't be opened.", .systemRed)
|
||||
]
|
||||
for (message, color) in dataCases {
|
||||
XCTAssertEqual(SettingsWindowController.dataStatusPresentation(storedStatus: message).textColor, color)
|
||||
}
|
||||
}
|
||||
|
||||
func testCaptureStatusColors() {
|
||||
let cases: [(String, NSColor)] = [
|
||||
("", .secondaryLabelColor),
|
||||
("Captured text from Safari.", .systemGreen),
|
||||
("Skipped: Audio items are ignored.", .systemOrange),
|
||||
("At least one content type must stay enabled.", .systemOrange),
|
||||
("Error: Clipboard read failed.", .systemRed)
|
||||
]
|
||||
for (message, color) in cases {
|
||||
XCTAssertEqual(SettingsWindowController.captureStatusPresentation(storedStatus: message).textColor, color)
|
||||
}
|
||||
}
|
||||
|
||||
func testShortcutPermissionAndLifecycleStatusColors() {
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.shortcutStatusPresentation(storedStatus: "").textColor,
|
||||
.systemGreen
|
||||
)
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.shortcutStatusPresentation(storedStatus: "Unsupported shortcut").textColor,
|
||||
.systemRed
|
||||
)
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.accessibilityPermissionStatusPresentation(
|
||||
storedStatus: "",
|
||||
isTrusted: true
|
||||
).textColor,
|
||||
.systemGreen
|
||||
)
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.accessibilityPermissionStatusPresentation(
|
||||
storedStatus: "Permission not granted",
|
||||
isTrusted: true
|
||||
).textColor,
|
||||
.systemOrange
|
||||
)
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.launchAtLoginStatusPresentation(storedStatus: "Service unavailable").textColor,
|
||||
.systemRed
|
||||
)
|
||||
}
|
||||
|
||||
func testCloudSyncStatusPrecedence() {
|
||||
let ready = ClipboardCloudSyncStatus(
|
||||
isAvailable: true,
|
||||
archiveURL: nil,
|
||||
lastModifiedAt: nil,
|
||||
message: "iCloud is ready."
|
||||
)
|
||||
let unavailable = ClipboardCloudSyncStatus(
|
||||
isAvailable: false,
|
||||
archiveURL: nil,
|
||||
lastModifiedAt: nil,
|
||||
message: "iCloud is unavailable."
|
||||
)
|
||||
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.cloudSyncStatusPresentation(
|
||||
storedStatus: "",
|
||||
isSyncEnabled: false,
|
||||
cloudStatus: ready
|
||||
).message,
|
||||
"iCloud Sync is off."
|
||||
)
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.cloudSyncStatusPresentation(
|
||||
storedStatus: "",
|
||||
isSyncEnabled: true,
|
||||
cloudStatus: unavailable
|
||||
).textColor,
|
||||
.systemOrange
|
||||
)
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.cloudSyncStatusPresentation(
|
||||
storedStatus: "Synced 3 clips.",
|
||||
isSyncEnabled: true,
|
||||
cloudStatus: ready
|
||||
).textColor,
|
||||
.systemGreen
|
||||
)
|
||||
XCTAssertEqual(
|
||||
SettingsWindowController.cloudSyncStatusPresentation(
|
||||
storedStatus: "iCloud Sync failed.",
|
||||
isSyncEnabled: true,
|
||||
cloudStatus: ready
|
||||
).textColor,
|
||||
.systemRed
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user