Stabilize beta release with warning cleanup and edge-case fixes

This commit is contained in:
Trey t
2026-02-22 13:18:14 -06:00
parent fddea81e36
commit ec2bbb4764
55 changed files with 712 additions and 315 deletions

View File

@@ -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))
}
}