Stabilize beta release with warning cleanup and edge-case fixes
This commit is contained in:
@@ -12,6 +12,7 @@ import XCTest
|
||||
private typealias H = ItineraryTestHelpers
|
||||
private typealias Logic = ItineraryReorderingLogic
|
||||
|
||||
@MainActor
|
||||
final class ItineraryReorderingLogicTests: XCTestCase {
|
||||
|
||||
private let testDate = H.testDate
|
||||
@@ -302,13 +303,8 @@ final class ItineraryReorderingLogicTests: XCTestCase {
|
||||
|
||||
func test_calculateSortOrder_emptyDay_returns1() {
|
||||
// Day with only header, no items
|
||||
let items = buildFlatItems([
|
||||
.day(1),
|
||||
.day(2)
|
||||
])
|
||||
|
||||
// Simulating drop right after day 1 header (row 0)
|
||||
// After inserting at row 1, day 1 has no other items
|
||||
// Simulating drop right after day 1 header (row 0). After inserting
|
||||
// at row 1, day 1 has no other items.
|
||||
let mockItems = buildFlatItems([
|
||||
.day(1),
|
||||
.custom("New", sortOrder: 999, day: 1), // Placeholder for dropped item
|
||||
@@ -810,16 +806,18 @@ final class ItineraryReorderingLogicTests: XCTestCase {
|
||||
])
|
||||
|
||||
let customItem = H.makeCustomItem(day: 1, sortOrder: 1.0, title: "A")
|
||||
let zones = Logic.calculateCustomItemDragZones(item: customItem, flatItems: items)
|
||||
let zones = Logic.calculateCustomItemDragZones(
|
||||
item: customItem,
|
||||
sourceRow: 1,
|
||||
flatItems: items,
|
||||
constraints: nil,
|
||||
findTravelSortOrder: { _ in nil }
|
||||
)
|
||||
|
||||
// Headers at rows 0, 2, 4 should be invalid
|
||||
XCTAssertTrue(zones.invalidRowIndices.contains(0))
|
||||
XCTAssertTrue(zones.invalidRowIndices.contains(2))
|
||||
XCTAssertTrue(zones.invalidRowIndices.contains(4))
|
||||
|
||||
// Items at rows 1, 3 should be valid
|
||||
XCTAssertTrue(zones.validDropRows.contains(1))
|
||||
XCTAssertTrue(zones.validDropRows.contains(3))
|
||||
// New API excludes source row from both valid and invalid sets.
|
||||
XCTAssertEqual(zones.invalidRowIndices, Set([0]))
|
||||
XCTAssertEqual(Set(zones.validDropRows), Set([2, 3, 4, 5]))
|
||||
XCTAssertFalse(zones.validDropRows.contains(1))
|
||||
}
|
||||
|
||||
func test_calculateTravelDragZones_respectsDayRange() {
|
||||
@@ -834,17 +832,21 @@ final class ItineraryReorderingLogicTests: XCTestCase {
|
||||
|
||||
let segment = H.makeTravelSegment(from: "CityA", to: "CityB")
|
||||
let travelValidRanges = ["travel:0:citya->cityb": 1...3]
|
||||
let travelItem = H.makeTravelItem(from: "CityA", to: "CityB", day: 2, sortOrder: 1.0)
|
||||
|
||||
let zones = Logic.calculateTravelDragZones(
|
||||
segment: segment,
|
||||
sourceRow: 3,
|
||||
flatItems: items,
|
||||
travelValidRanges: travelValidRanges,
|
||||
constraints: nil,
|
||||
findTravelItem: { _ in nil }
|
||||
findTravelItem: { _ in travelItem },
|
||||
makeTravelItem: { _ in travelItem },
|
||||
findTravelSortOrder: { _ in travelItem.sortOrder }
|
||||
)
|
||||
|
||||
// All days 1-3 should be valid (6 rows total)
|
||||
XCTAssertEqual(zones.validDropRows.count, 6)
|
||||
XCTAssertTrue(zones.invalidRowIndices.isEmpty)
|
||||
XCTAssertEqual(Set(zones.validDropRows), Set([1, 2, 4, 5, 6]))
|
||||
XCTAssertEqual(zones.invalidRowIndices, Set([0]))
|
||||
XCTAssertFalse(zones.validDropRows.contains(3))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user