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

@@ -28,7 +28,7 @@ struct TeamFirstIntegrationTests {
@Test("Integration: 3 MLB teams returns top 10 routes")
func integration_3MLBTeams_returnsTop10Routes() {
let baseDate = Date()
let baseDate = TestClock.now
// Create realistic MLB stadiums
let yankeeStadium = Stadium(
@@ -99,7 +99,7 @@ struct TeamFirstIntegrationTests {
// Day 1: Yankees home
// Day 3: Red Sox home
// Day 6: Phillies home (spans 6 days, window fits)
let calendar = Calendar.current
let calendar = TestClock.calendar
let day1 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 1))!
let day3 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 3))!
let day6 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 6))!
@@ -177,7 +177,7 @@ struct TeamFirstIntegrationTests {
@Test("Integration: each route visits all 3 stadiums")
func integration_eachRouteVisitsAll3Stadiums() {
let baseDate = Date()
let baseDate = TestClock.now
let yankeeStadium = makeStadium(
id: "yankee-stadium",
@@ -288,7 +288,7 @@ struct TeamFirstIntegrationTests {
@Test("Integration: total duration within 6 days (teams x 2)")
func integration_totalDurationWithinLimit() {
let baseDate = Date()
let baseDate = TestClock.now
let yankeeStadium = makeStadium(
id: "yankee-stadium",
@@ -311,7 +311,7 @@ struct TeamFirstIntegrationTests {
// Create games that fit within a 6-day window
// For 3 teams, window = 6 days. Games must span at least 6 days.
let calendar = Calendar.current
let calendar = TestClock.calendar
let day1 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 1))!
let day3 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 3))!
let day6 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 6))!
@@ -393,7 +393,7 @@ struct TeamFirstIntegrationTests {
continue
}
let calendar = Calendar.current
let calendar = TestClock.calendar
let tripDays = calendar.dateComponents(
[.day],
from: calendar.startOfDay(for: firstStop.arrivalDate),
@@ -407,7 +407,7 @@ struct TeamFirstIntegrationTests {
@Test("Integration: factory selects ScenarioEPlanner for teamFirst mode")
func integration_factorySelectsScenarioEPlanner() {
let baseDate = Date()
let baseDate = TestClock.now
let prefs = TripPreferences(
planningMode: .teamFirst,
@@ -436,7 +436,7 @@ struct TeamFirstIntegrationTests {
@Test("Integration: factory requires 2+ teams for ScenarioE")
func integration_factoryRequires2TeamsForScenarioE() {
let baseDate = Date()
let baseDate = TestClock.now
// With only 1 team, should NOT select ScenarioE
var prefs = TripPreferences(
@@ -475,7 +475,7 @@ struct TeamFirstIntegrationTests {
@Test("Integration: realistic east coast trip with 4 teams")
func integration_realisticEastCoastTrip() {
let baseDate = Date()
let baseDate = TestClock.now
// East coast stadiums (NYC, Boston, Philly, Baltimore)
let yankeeStadium = makeStadium(
@@ -505,7 +505,7 @@ struct TeamFirstIntegrationTests {
// Create games spread across 8-day window (4 teams * 2 = 8 days)
// For 4 teams, window = 8 days. Games must span at least 8 days.
let calendar = Calendar.current
let calendar = TestClock.calendar
let day1 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 1))!
let day3 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 3))!
let day5 = calendar.date(bySettingHour: 19, minute: 0, second: 0, of: baseDate.addingTimeInterval(86400 * 5))!