WIP: show filtered result in clipboard
This commit is contained in:
@@ -166,6 +166,7 @@ final class ClipboardPanelControllerTests: XCTestCase {
|
||||
|
||||
func testCommandActionShortcutsMapToSelectedClipActions() {
|
||||
XCTAssertEqual(ClipboardPanelController.commandShortcutAction(forKeyCode: 8, modifiers: .command), .copy)
|
||||
XCTAssertEqual(ClipboardPanelController.commandShortcutAction(forKeyCode: 5, modifiers: .command), .showInClipboard)
|
||||
XCTAssertEqual(ClipboardPanelController.commandShortcutAction(forKeyCode: 16, modifiers: .command), .preview)
|
||||
XCTAssertEqual(ClipboardPanelController.commandShortcutAction(forKeyCode: 31, modifiers: .command), .open)
|
||||
XCTAssertEqual(ClipboardPanelController.commandShortcutAction(forKeyCode: 15, modifiers: .command), .reveal)
|
||||
|
||||
@@ -256,6 +256,44 @@ final class ClipboardPanelViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(viewModel.selectedItem?.payload, "needle note")
|
||||
}
|
||||
|
||||
func testShowSelectedInClipboardClearsFiltersAndKeepsHistoryPosition() {
|
||||
let settings = makeSettings()
|
||||
let cacheService = makeCacheService()
|
||||
let store = makeStore(settings: settings, cacheService: cacheService)
|
||||
let older = makeTextItem("release needle", createdAt: Date(timeIntervalSince1970: 100))
|
||||
let newer = makeTextItem("meeting note", createdAt: Date(timeIntervalSince1970: 200))
|
||||
store.upsert(older)
|
||||
store.upsert(newer)
|
||||
store.flushPersistenceForTesting()
|
||||
|
||||
let viewModel = ClipboardPanelViewModel(store: store, settings: settings, cacheService: cacheService)
|
||||
waitForVisibleItems(in: viewModel, count: 2)
|
||||
XCTAssertEqual(viewModel.visibleItems.map(\.payload), ["meeting note", "release needle"])
|
||||
|
||||
viewModel.selectItem(at: 1)
|
||||
viewModel.assignSelected(to: "Client Work")
|
||||
store.flushPersistenceForTesting()
|
||||
waitForVisibleItems(in: viewModel, count: 2)
|
||||
|
||||
viewModel.selectCollection(named: "Client Work")
|
||||
viewModel.searchText = "release"
|
||||
|
||||
XCTAssertTrue(viewModel.canShowSelectedInClipboard)
|
||||
XCTAssertEqual(viewModel.visibleItems.map(\.payload), ["release needle"])
|
||||
|
||||
viewModel.showSelectedInClipboard()
|
||||
|
||||
XCTAssertEqual(viewModel.searchText, "")
|
||||
XCTAssertNil(viewModel.selectedCollectionName)
|
||||
XCTAssertFalse(viewModel.isStackFilterSelected)
|
||||
XCTAssertEqual(viewModel.sortMode, .mostRecent)
|
||||
XCTAssertEqual(viewModel.visibleItems.map(\.payload), ["meeting note", "release needle"])
|
||||
XCTAssertEqual(viewModel.selectedItem?.id, older.id)
|
||||
XCTAssertEqual(viewModel.selectedIndex, 1)
|
||||
XCTAssertFalse(viewModel.canShowSelectedInClipboard)
|
||||
XCTAssertEqual(viewModel.statusMessage, "Showing in Clipboard")
|
||||
}
|
||||
|
||||
func testSelectFirstItemSelectsFirstVisibleItem() {
|
||||
let settings = makeSettings()
|
||||
let cacheService = makeCacheService()
|
||||
|
||||
@@ -407,6 +407,36 @@ final class ClipboardPanelViewTests: XCTestCase {
|
||||
)
|
||||
}
|
||||
|
||||
func testFilteredCardsExposeShowInClipboardContextMenuAction() {
|
||||
let fixture = makePanelFixture()
|
||||
var release = makeTextItem("Release needle", store: fixture.store)
|
||||
release.createdAt = Date(timeIntervalSince1970: 100)
|
||||
release.lastUsedAt = release.createdAt
|
||||
var meeting = makeTextItem("Meeting note", store: fixture.store)
|
||||
meeting.createdAt = Date(timeIntervalSince1970: 200)
|
||||
meeting.lastUsedAt = meeting.createdAt
|
||||
fixture.store.upsert(release)
|
||||
fixture.store.upsert(meeting)
|
||||
drainMainQueue()
|
||||
|
||||
fixture.viewModel.searchText = "release"
|
||||
drainMainQueue()
|
||||
fixture.window.contentView?.layoutSubtreeIfNeeded()
|
||||
|
||||
XCTAssertEqual(
|
||||
fixture.view.debugFirstCardMenuTitles,
|
||||
["Paste", "Copy", "Show in Clipboard", "Add to Stack", "Edit", "Pin", "Add to Collection", "Capture Rules", "-", "Open", "Reveal in Finder", "-", "Delete"]
|
||||
)
|
||||
|
||||
fixture.view.debugShowFirstCardInClipboard()
|
||||
drainMainQueue()
|
||||
fixture.window.contentView?.layoutSubtreeIfNeeded()
|
||||
|
||||
XCTAssertEqual(fixture.view.debugSearchFieldText, "")
|
||||
XCTAssertEqual(fixture.viewModel.visibleItems.map(\.payload), ["Meeting note", "Release needle"])
|
||||
XCTAssertEqual(fixture.viewModel.selectedItem?.payload, "Release needle")
|
||||
}
|
||||
|
||||
func testPreviewableCardsExposeQuickLookContextMenuAction() {
|
||||
let fixture = makePanelFixture()
|
||||
fixture.store.upsert(makeItem(kind: .file, text: "/tmp/report.txt", store: fixture.store))
|
||||
|
||||
Reference in New Issue
Block a user