WIP: show stack in collection rail
This commit is contained in:
@@ -367,6 +367,40 @@ final class ClipboardPanelViewModelTests: XCTestCase {
|
||||
XCTAssertEqual(viewModel.statusMessage, "Cleared Stack")
|
||||
}
|
||||
|
||||
func testSelectingStackFiltersVisibleItemsInQueueOrder() {
|
||||
let settings = makeSettings()
|
||||
let cacheService = makeCacheService()
|
||||
let store = makeStore(settings: settings, cacheService: cacheService)
|
||||
let first = makeTextItem("first queue note", createdAt: Date(timeIntervalSince1970: 100))
|
||||
let second = makeTextItem("second queue note", createdAt: Date(timeIntervalSince1970: 200))
|
||||
let outside = makeTextItem("outside note", createdAt: Date(timeIntervalSince1970: 300))
|
||||
store.upsert(first)
|
||||
store.upsert(second)
|
||||
store.upsert(outside)
|
||||
store.flushPersistenceForTesting()
|
||||
|
||||
let viewModel = ClipboardPanelViewModel(store: store, settings: settings, cacheService: cacheService)
|
||||
waitForVisibleItems(in: viewModel, count: 3)
|
||||
XCTAssertEqual(viewModel.visibleItems.map(\.payload), ["outside note", "second queue note", "first queue note"])
|
||||
|
||||
viewModel.selectItem(at: 2)
|
||||
viewModel.toggleSelectedStackMembership()
|
||||
viewModel.selectItem(at: 1)
|
||||
viewModel.toggleSelectedStackMembership()
|
||||
viewModel.selectStack()
|
||||
|
||||
XCTAssertTrue(viewModel.isStackFilterSelected)
|
||||
XCTAssertEqual(viewModel.visibleItems.map(\.payload), ["first queue note", "second queue note"])
|
||||
|
||||
viewModel.searchText = "second"
|
||||
XCTAssertEqual(viewModel.visibleItems.map(\.payload), ["second queue note"])
|
||||
|
||||
viewModel.clearSearch()
|
||||
viewModel.sortMode = .text
|
||||
XCTAssertFalse(viewModel.isStackFilterSelected)
|
||||
XCTAssertEqual(viewModel.visibleItems.map(\.payload), ["outside note", "second queue note", "first queue note"])
|
||||
}
|
||||
|
||||
func testUpdateSelectedTextRefreshesVisibleItemAndSearch() {
|
||||
let settings = makeSettings()
|
||||
let cacheService = makeCacheService()
|
||||
|
||||
@@ -370,6 +370,42 @@ final class ClipboardPanelViewTests: XCTestCase {
|
||||
XCTAssertEqual(fixture.view.debugFirstCardVisibleActionLabels, ["Paste", "Copy", "Pin", "Remove from Stack", "Edit", "Delete"])
|
||||
}
|
||||
|
||||
func testStackChipAppearsFiltersAndClearsWithStack() {
|
||||
let fixture = makePanelFixture()
|
||||
fixture.store.upsert(makeTextItem("First stack chip item", store: fixture.store))
|
||||
fixture.store.upsert(makeTextItem("Second stack chip item", store: fixture.store))
|
||||
drainMainQueue()
|
||||
fixture.window.contentView?.layoutSubtreeIfNeeded()
|
||||
|
||||
XCTAssertFalse(fixture.view.debugStackChipIsVisible)
|
||||
|
||||
fixture.viewModel.selectItem(at: 1)
|
||||
fixture.viewModel.toggleSelectedStackMembership()
|
||||
fixture.viewModel.selectItem(at: 0)
|
||||
fixture.viewModel.toggleSelectedStackMembership()
|
||||
drainMainQueue()
|
||||
fixture.window.contentView?.layoutSubtreeIfNeeded()
|
||||
|
||||
XCTAssertTrue(fixture.view.debugStackChipIsVisible)
|
||||
XCTAssertEqual(fixture.view.debugStackChipCount, 2)
|
||||
XCTAssertFalse(fixture.view.debugStackChipIsSelected)
|
||||
|
||||
fixture.view.debugPressStackChip()
|
||||
drainMainQueue()
|
||||
fixture.window.contentView?.layoutSubtreeIfNeeded()
|
||||
|
||||
XCTAssertEqual(fixture.view.debugSelectedCollectionTitle, "Stack")
|
||||
XCTAssertTrue(fixture.view.debugStackChipIsSelected)
|
||||
XCTAssertEqual(fixture.viewModel.visibleItems.map(\.payload), ["First stack chip item", "Second stack chip item"])
|
||||
|
||||
fixture.viewModel.clearStack()
|
||||
drainMainQueue()
|
||||
fixture.window.contentView?.layoutSubtreeIfNeeded()
|
||||
|
||||
XCTAssertFalse(fixture.view.debugStackChipIsVisible)
|
||||
XCTAssertEqual(fixture.view.debugStackChipCount, 0)
|
||||
}
|
||||
|
||||
func testCollectionMenuOffersExistingCustomCollections() {
|
||||
let fixture = makePanelFixture()
|
||||
var existing = makeTextItem("Existing client note", store: fixture.store)
|
||||
|
||||
Reference in New Issue
Block a user