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