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