WIP: add card capture rules
This commit is contained in:
@@ -504,6 +504,63 @@ final class ClipboardPanelViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(viewModel.statusMessage, "Cleared Stack")
|
||||
}
|
||||
|
||||
func testIgnoreSelectedSourceAppAddsPreciseCaptureRule() {
|
||||
let settings = makeSettings()
|
||||
let cacheService = makeCacheService()
|
||||
let store = makeStore(settings: settings, cacheService: cacheService)
|
||||
var item = makeTextItem("source rule clip", createdAt: Date(timeIntervalSince1970: 100))
|
||||
item.sourceApp = "Slack"
|
||||
item.sourceAppBundleId = "com.tinyspeck.slackmacgap"
|
||||
store.upsert(item)
|
||||
store.flushPersistenceForTesting()
|
||||
|
||||
let viewModel = ClipboardPanelViewModel(store: store, settings: settings, cacheService: cacheService)
|
||||
waitForVisibleItems(in: viewModel, count: 1)
|
||||
let initialIgnoredApps = settings.ignoredApps
|
||||
|
||||
viewModel.ignoreSelectedSourceApp()
|
||||
|
||||
XCTAssertEqual(settings.ignoredApps, initialIgnoredApps + ["com.tinyspeck.slackmacgap"])
|
||||
XCTAssertEqual(viewModel.statusMessage, "Ignored Slack for future captures")
|
||||
|
||||
viewModel.ignoreSelectedSourceApp()
|
||||
XCTAssertEqual(settings.ignoredApps, initialIgnoredApps + ["com.tinyspeck.slackmacgap"])
|
||||
XCTAssertEqual(viewModel.statusMessage, "Slack is already ignored")
|
||||
}
|
||||
|
||||
func testIgnoreSelectedKindAddsContentTypeCaptureRule() {
|
||||
let settings = makeSettings()
|
||||
let cacheService = makeCacheService()
|
||||
let store = makeStore(settings: settings, cacheService: cacheService)
|
||||
let item = ClipboardItem(
|
||||
id: UUID(),
|
||||
kind: .image,
|
||||
displayText: "Image",
|
||||
payload: "/tmp/image.png",
|
||||
payloadHash: hash("image"),
|
||||
createdAt: Date(timeIntervalSince1970: 100),
|
||||
lastUsedAt: Date(timeIntervalSince1970: 100),
|
||||
useCount: 0,
|
||||
sourceApp: "Photos",
|
||||
imagePath: nil,
|
||||
thumbnailPath: nil
|
||||
)
|
||||
store.upsert(item)
|
||||
store.flushPersistenceForTesting()
|
||||
|
||||
let viewModel = ClipboardPanelViewModel(store: store, settings: settings, cacheService: cacheService)
|
||||
waitForVisibleItems(in: viewModel, count: 1)
|
||||
|
||||
viewModel.ignoreSelectedKind()
|
||||
|
||||
XCTAssertEqual(settings.ignoredItemKindsRaw, [ClipboardItemKind.image.rawValue])
|
||||
XCTAssertEqual(viewModel.statusMessage, "Ignored Image items for future captures")
|
||||
|
||||
viewModel.ignoreSelectedKind()
|
||||
XCTAssertEqual(settings.ignoredItemKindsRaw, [ClipboardItemKind.image.rawValue])
|
||||
XCTAssertEqual(viewModel.statusMessage, "Image items are already ignored")
|
||||
}
|
||||
|
||||
func testSelectingStackFiltersVisibleItemsInQueueOrder() {
|
||||
let settings = makeSettings()
|
||||
let cacheService = makeCacheService()
|
||||
|
||||
@@ -345,12 +345,16 @@ final class ClipboardPanelViewTests: XCTestCase {
|
||||
|
||||
XCTAssertEqual(
|
||||
fixture.view.debugFirstCardMenuTitles,
|
||||
["Paste", "Copy", "Add to Stack", "Edit", "Pin", "Add to Collection", "-", "Open", "Reveal in Finder", "-", "Delete"]
|
||||
["Paste", "Copy", "Add to Stack", "Edit", "Pin", "Add to Collection", "Capture Rules", "-", "Open", "Reveal in Finder", "-", "Delete"]
|
||||
)
|
||||
XCTAssertEqual(
|
||||
fixture.view.debugFirstCardCollectionMenuTitles,
|
||||
["Useful Links", "Important Notes", "Code Snippets", "Read Later", "-", "New Collection..."]
|
||||
)
|
||||
XCTAssertEqual(
|
||||
fixture.view.debugFirstCardCaptureRuleMenuTitles,
|
||||
["Ignore Ghostty", "Ignore Text Items"]
|
||||
)
|
||||
}
|
||||
|
||||
func testPreviewableCardsExposeQuickLookContextMenuAction() {
|
||||
@@ -361,7 +365,11 @@ final class ClipboardPanelViewTests: XCTestCase {
|
||||
|
||||
XCTAssertEqual(
|
||||
fixture.view.debugFirstCardMenuTitles,
|
||||
["Paste", "Copy", "Paste Plain Text", "Copy Plain Text", "Add to Stack", "Quick Look", "Pin", "Add to Collection", "-", "Open", "Reveal in Finder", "-", "Delete"]
|
||||
["Paste", "Copy", "Paste Plain Text", "Copy Plain Text", "Add to Stack", "Quick Look", "Pin", "Add to Collection", "Capture Rules", "-", "Open", "Reveal in Finder", "-", "Delete"]
|
||||
)
|
||||
XCTAssertEqual(
|
||||
fixture.view.debugFirstCardCaptureRuleMenuTitles,
|
||||
["Ignore Ghostty", "Ignore File Items"]
|
||||
)
|
||||
}
|
||||
|
||||
@@ -377,7 +385,7 @@ final class ClipboardPanelViewTests: XCTestCase {
|
||||
|
||||
XCTAssertEqual(
|
||||
fixture.view.debugFirstCardMenuTitles,
|
||||
["Paste", "Copy", "Remove from Stack", "Paste Stack Next", "Copy Stack Next", "Clear Stack", "Edit", "Pin", "Add to Collection", "-", "Open", "Reveal in Finder", "-", "Delete"]
|
||||
["Paste", "Copy", "Remove from Stack", "Paste Stack Next", "Copy Stack Next", "Clear Stack", "Edit", "Pin", "Add to Collection", "Capture Rules", "-", "Open", "Reveal in Finder", "-", "Delete"]
|
||||
)
|
||||
XCTAssertEqual(fixture.view.debugFirstCardVisibleActionLabels, ["Paste", "Copy", "Pin", "Remove from Stack", "Edit", "Delete"])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user