using Marathon.Application.Storage; using Marathon.UI.Services; namespace Marathon.UI.Tests.Support; /// /// In-memory for bUnit tests. /// Seed via / . /// public sealed class FakeResultsBrowsingService : IResultsBrowsingService { public List ResultItems { get; } = new(); public List Candidates { get; } = new(); public ResultsFilter? LastResultsFilter { get; private set; } public DateRange? LastCandidatesRange { get; private set; } public Task> ListResultsAsync( ResultsFilter filter, CancellationToken ct) { LastResultsFilter = filter; IEnumerable q = ResultItems; if (filter.SportCodes is { Count: > 0 } sports) q = q.Where(r => sports.Contains(r.Sport.Value)); if (filter.WinnerSide is { } winner) q = q.Where(r => r.WinnerSide == winner); if (!string.IsNullOrWhiteSpace(filter.SearchTerm)) { var t = filter.SearchTerm.Trim(); q = q.Where(r => r.LeagueId.Contains(t, StringComparison.OrdinalIgnoreCase) || r.Side1Name.Contains(t, StringComparison.OrdinalIgnoreCase) || r.Side2Name.Contains(t, StringComparison.OrdinalIgnoreCase)); } return Task.FromResult>(q.ToList()); } public Task> ListLoadCandidatesAsync( DateRange range, CancellationToken ct) { LastCandidatesRange = range; return Task.FromResult>(Candidates.ToList()); } }