Fix dish deletion list flicker with stable identity/order and add regression test
This commit is contained in:
@@ -59,5 +59,17 @@ final class AutocompleteEngineTests: XCTestCase {
|
||||
XCTAssertEqual(result.unfilledCount, 1)
|
||||
XCTAssertNil(tuesdayDinner.dishId)
|
||||
}
|
||||
}
|
||||
|
||||
func testDishStableSortRemainsConsistentAfterDeletion() {
|
||||
let base = Date()
|
||||
let oldest = Dish(id: UUID(uuidString: "00000000-0000-0000-0000-000000000001")!, name: "Old", createdAt: base.addingTimeInterval(-60))
|
||||
let newest = Dish(id: UUID(uuidString: "00000000-0000-0000-0000-000000000002")!, name: "New", createdAt: base)
|
||||
let middle = Dish(id: UUID(uuidString: "00000000-0000-0000-0000-000000000003")!, name: "Middle", createdAt: base.addingTimeInterval(-30))
|
||||
|
||||
let initial = Dish.stableSortedForDisplay([oldest, newest, middle]).map(\.id)
|
||||
XCTAssertEqual(initial, [newest.id, middle.id, oldest.id])
|
||||
|
||||
let afterDeletion = Dish.stableSortedForDisplay([newest, oldest]).map(\.id)
|
||||
XCTAssertEqual(afterDeletion, [newest.id, oldest.id])
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user