using Marathon.Domain.Entities; using Marathon.Domain.Enums; using Marathon.Domain.ValueObjects; namespace Marathon.Application.Tests.UseCases; /// /// Shared factory helpers for domain objects used across use-case tests. /// internal static class TestFixtures { private static readonly TimeSpan MoscowOffset = TimeSpan.FromHours(3); /// Creates a minimal valid with the given event ID string. public static Event MakeEvent(string eventIdValue = "12345678") { return new Event( Id: new EventId(eventIdValue), Sport: new SportCode(6), CountryCode: "BY", LeagueId: "league-1", Category: "Group A", ScheduledAt: new DateTimeOffset(2026, 5, 10, 18, 0, 0, MoscowOffset), Side1Name: "Team A", Side2Name: "Team B"); } /// Creates a minimal valid for the given event. public static OddsSnapshot MakeSnapshot(EventId eventId, OddsSource source = OddsSource.PreMatch) { var bets = new List { new Bet(MatchScope.Instance, BetType.Win, Side.Side1, value: null, new OddsRate(1.85m)), new Bet(MatchScope.Instance, BetType.Win, Side.Side2, value: null, new OddsRate(2.10m)), }; return new OddsSnapshot(eventId, DateTimeOffset.UtcNow, source, bets); } /// Creates a minimal valid for the given event ID. public static EventResult MakeResult(EventId eventId) { return new EventResult(eventId, 2, 1, Side.Side1, DateTimeOffset.UtcNow); } }