Stabilize unit and UI tests for SportsTime

This commit is contained in:
treyt
2026-02-18 13:00:15 -06:00
parent 1488be7c1f
commit 20ac1a7e59
49 changed files with 432 additions and 325 deletions

View File

@@ -22,8 +22,8 @@ struct Bug1_TeamFirstSingleTeamTests {
planningMode: .teamFirst,
sports: [.mlb],
travelMode: .drive,
startDate: Date(),
endDate: Calendar.current.date(byAdding: .day, value: 7, to: Date())!,
startDate: TestClock.now,
endDate: TestClock.calendar.date(byAdding: .day, value: 7, to: TestClock.now)!,
leisureLevel: .moderate,
routePreference: .balanced,
selectedTeamIds: ["team_mlb_boston"]
@@ -47,8 +47,8 @@ struct Bug1_TeamFirstSingleTeamTests {
planningMode: .teamFirst,
sports: [.mlb],
travelMode: .drive,
startDate: Date(),
endDate: Calendar.current.date(byAdding: .day, value: 7, to: Date())!,
startDate: TestClock.now,
endDate: TestClock.calendar.date(byAdding: .day, value: 7, to: TestClock.now)!,
leisureLevel: .moderate,
routePreference: .balanced,
selectedTeamIds: ["team_mlb_boston", "team_mlb_new_york"]
@@ -73,7 +73,7 @@ struct Bug2_InfiniteLoopTests {
@Test("calculateRestDays does not hang for normal multi-day stop")
func calculateRestDays_normalMultiDay_terminates() {
let calendar = Calendar.current
let calendar = TestClock.calendar
let arrival = TestFixtures.date(year: 2026, month: 6, day: 10, hour: 12)
let departure = TestFixtures.date(year: 2026, month: 6, day: 14, hour: 12)
@@ -236,7 +236,7 @@ struct Bug5_ScenarioDDepartureDateTests {
@Test("stop departureDate should be after last game, not same day")
func departureDate_shouldBeAfterLastGame() {
let gameDate = TestFixtures.date(year: 2026, month: 7, day: 5, hour: 19)
let calendar = Calendar.current
let calendar = TestClock.calendar
let bostonStadium = TestFixtures.stadium(city: "Boston")
let game = TestFixtures.game(id: "g1", city: "Boston", dateTime: gameDate, stadiumId: bostonStadium.id)
@@ -283,7 +283,7 @@ struct Bug6_ScenarioCDateRangeTests {
@Test("games spanning exactly daySpan should be included")
func gamesSpanningExactDaySpan_shouldBeIncluded() {
// If daySpan is 7, games exactly 7 days apart should be valid
let calendar = Calendar.current
let calendar = TestClock.calendar
let startDate = TestFixtures.date(year: 2026, month: 7, day: 1, hour: 19)
let endDate = calendar.date(byAdding: .day, value: 7, to: startDate)!
@@ -341,8 +341,8 @@ struct Bug7_DrivingConstraintsClampTests {
planningMode: .dateRange,
sports: [.mlb],
travelMode: .drive,
startDate: Date(),
endDate: Calendar.current.date(byAdding: .day, value: 7, to: Date())!,
startDate: TestClock.now,
endDate: TestClock.calendar.date(byAdding: .day, value: 7, to: TestClock.now)!,
leisureLevel: .moderate,
routePreference: .balanced,
maxDrivingHoursPerDriver: 0.5
@@ -365,8 +365,8 @@ struct Bug7_DrivingConstraintsClampTests {
planningMode: .dateRange,
sports: [.mlb],
travelMode: .drive,
startDate: Date(),
endDate: Calendar.current.date(byAdding: .day, value: 7, to: Date())!,
startDate: TestClock.now,
endDate: TestClock.calendar.date(byAdding: .day, value: 7, to: TestClock.now)!,
leisureLevel: .moderate,
routePreference: .balanced,
maxDrivingHoursPerDriver: nil
@@ -522,18 +522,18 @@ struct Bug11_SortByLeisureTests {
city: "Boston", state: "MA",
coordinate: TestFixtures.coordinates["Boston"],
games: ["g1", "g2", "g3"],
arrivalDate: Date(), departureDate: Date().addingTimeInterval(86400),
arrivalDate: TestClock.now, departureDate: TestClock.now.addingTimeInterval(86400),
location: LocationInput(name: "Boston", coordinate: TestFixtures.coordinates["Boston"]),
firstGameStart: Date()
firstGameStart: TestClock.now
)
let stop2 = ItineraryStop(
city: "Boston", state: "MA",
coordinate: TestFixtures.coordinates["Boston"],
games: ["g4"],
arrivalDate: Date(), departureDate: Date().addingTimeInterval(86400),
arrivalDate: TestClock.now, departureDate: TestClock.now.addingTimeInterval(86400),
location: LocationInput(name: "Boston", coordinate: TestFixtures.coordinates["Boston"]),
firstGameStart: Date()
firstGameStart: TestClock.now
)
let option3Games = ItineraryOption(
@@ -563,7 +563,7 @@ struct Bug12_ValidatorGameEndTimeTests {
@Test("validator checks arrival feasibility with buffer")
func validator_checksArrivalBuffer() {
// Use deterministic dates to avoid time-of-day sensitivity
let calendar = Calendar.current
let calendar = TestClock.calendar
let today = TestFixtures.date(year: 2026, month: 7, day: 10, hour: 14) // 2pm today
let tomorrow = calendar.date(byAdding: .day, value: 1, to: today)!
let tomorrowMorning = TestFixtures.date(year: 2026, month: 7, day: 11, hour: 8) // 8am departure
@@ -735,13 +735,13 @@ struct TravelEstimatorConsistencyTests {
// ItineraryStop overload
let fromStop = ItineraryStop(
city: "Boston", state: "MA", coordinate: bostonCoord,
games: [], arrivalDate: Date(), departureDate: Date(),
games: [], arrivalDate: TestClock.now, departureDate: TestClock.now,
location: LocationInput(name: "Boston", coordinate: bostonCoord),
firstGameStart: nil
)
let toStop = ItineraryStop(
city: "New York", state: "NY", coordinate: nycCoord,
games: [], arrivalDate: Date(), departureDate: Date(),
games: [], arrivalDate: TestClock.now, departureDate: TestClock.now,
location: LocationInput(name: "New York", coordinate: nycCoord),
firstGameStart: nil
)