refactor(tests): TDD rewrite of all unit tests with spec documentation
Complete rewrite of unit test suite using TDD methodology: Planning Engine Tests: - GameDAGRouterTests: Beam search, anchor games, transitions - ItineraryBuilderTests: Stop connection, validators, EV enrichment - RouteFiltersTests: Region, time window, scoring filters - ScenarioA/B/C/D PlannerTests: All planning scenarios - TravelEstimatorTests: Distance, duration, travel days - TripPlanningEngineTests: Orchestration, caching, preferences Domain Model Tests: - AchievementDefinitionsTests, AnySportTests, DivisionTests - GameTests, ProgressTests, RegionTests, StadiumTests - TeamTests, TravelSegmentTests, TripTests, TripPollTests - TripPreferencesTests, TripStopTests, SportTests Service Tests: - FreeScoreAPITests, RouteDescriptionGeneratorTests - SuggestedTripsGeneratorTests Export Tests: - ShareableContentTests (card types, themes, dimensions) Bug fixes discovered through TDD: - ShareCardDimensions: mapSnapshotSize exceeded available width (960x480) - ScenarioBPlanner: Added anchor game validation filter All tests include: - Specification tests (expected behavior) - Invariant tests (properties that must always hold) - Edge case tests (boundary conditions) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,19 @@ import Foundation
|
||||
|
||||
/// Main entry point for trip planning.
|
||||
/// Delegates to scenario-specific planners via the ScenarioPlanner protocol.
|
||||
///
|
||||
/// - Expected Behavior:
|
||||
/// - Uses ScenarioPlannerFactory.planner(for:) to select the right planner
|
||||
/// - Delegates entirely to the selected scenario planner
|
||||
/// - Applies repeat city filter to successful results
|
||||
/// - If all options violate repeat city constraint → .failure with .repeatCityViolation
|
||||
/// - Passes through failures from scenario planners unchanged
|
||||
///
|
||||
/// - Invariants:
|
||||
/// - Never modifies the logic of scenario planners
|
||||
/// - Always returns a result (success or failure), never throws
|
||||
/// - Repeat city filter only applied when allowRepeatCities is false
|
||||
///
|
||||
final class TripPlanningEngine {
|
||||
|
||||
/// Plans itineraries based on the request inputs.
|
||||
|
||||
Reference in New Issue
Block a user