public async Task Read_seasons_sorts_by_active_first_then_most_recent() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await seasonDataSource.ReadSeasons(null).ConfigureAwait(false); var expectedActiveStatus = true; int previousFromYear = int.MaxValue, previousUntilYear = int.MaxValue; foreach (var season in results) { // The first time an inactive competition is seen, set a flag to say they must all be inactive. // Also reset the tracker that says season years must count down from the most recent. if (expectedActiveStatus && season.Competition.UntilYear.HasValue) { expectedActiveStatus = false; previousFromYear = previousUntilYear = int.MaxValue; } Assert.Equal(expectedActiveStatus, !season.Competition.UntilYear.HasValue); Assert.True(season.FromYear <= previousFromYear); Assert.True(season.UntilYear <= previousUntilYear); previousFromYear = season.FromYear; previousUntilYear = season.UntilYear; } Assert.False(expectedActiveStatus); }
public async Task Read_seasons_supports_no_filter() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await seasonDataSource.ReadSeasons(null).ConfigureAwait(false); Assert.Equal(_databaseFixture.Seasons.Count, results.Count); foreach (var season in _databaseFixture.Seasons) { Assert.NotNull(results.SingleOrDefault(x => x.SeasonId == season.SeasonId)); } }
public async Task Read_seasons_supports_case_insensitive_filter_by_player_type_query() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await seasonDataSource.ReadSeasons(new CompetitionFilter { Query = "LaDiEs" }).ConfigureAwait(false); var expected = _databaseFixture.Seasons.Where(x => x.Competition.PlayerType == PlayerType.Ladies); Assert.Equal(expected.Count(), result.Count); foreach (var season in expected) { Assert.NotNull(result.SingleOrDefault(x => x.SeasonId == season.SeasonId)); } }
public async Task Read_seasons_supports_filter_by_tournaments_enabled() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await seasonDataSource.ReadSeasons(new CompetitionFilter { EnableTournaments = true }).ConfigureAwait(false); var expected = _databaseFixture.Seasons.Where(x => x.EnableTournaments); Assert.Equal(expected.Count(), result.Count); foreach (var season in expected) { Assert.NotNull(result.SingleOrDefault(x => x.SeasonId == season.SeasonId)); } }
public async Task Read_seasons_supports_filter_by_until_year() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await seasonDataSource.ReadSeasons(new CompetitionFilter { UntilYear = DateTimeOffset.UtcNow.Year }).ConfigureAwait(false); var expected = _databaseFixture.Seasons.Where(x => x.UntilYear == DateTimeOffset.UtcNow.Year); Assert.Equal(expected.Count(), result.Count); foreach (var season in expected) { Assert.NotNull(result.SingleOrDefault(x => x.SeasonId == season.SeasonId)); } }
public async Task Read_seasons_supports_case_insensitive_filter_by_winter_season() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await seasonDataSource.ReadSeasons(new CompetitionFilter { Query = "2020/21 season" }).ConfigureAwait(false); var expected = _databaseFixture.Seasons.Where(x => x.FromYear == 2020 && x.UntilYear == 2021); Assert.Equal(expected.Count(), result.Count); foreach (var season in expected) { Assert.NotNull(result.SingleOrDefault(x => x.SeasonId == season.SeasonId)); } }
public async Task Read_seasons_returns_competitions() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await seasonDataSource.ReadSeasons(null).ConfigureAwait(false); foreach (var season in _databaseFixture.Seasons) { var result = results.SingleOrDefault(x => x.SeasonId == season.SeasonId); Assert.NotNull(result); Assert.Equal(season.Competition.CompetitionName, result.Competition.CompetitionName); } }
public async Task Read_seasons_supports_filter_by_match_type() { var routeNormaliser = new Mock <IRouteNormaliser>(); var seasonDataSource = new SqlServerSeasonDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await seasonDataSource.ReadSeasons(new CompetitionFilter { MatchTypes = new List <MatchType> { MatchType.LeagueMatch } }).ConfigureAwait(false); var expected = _databaseFixture.Seasons.Where(x => x.MatchTypes.Contains(MatchType.LeagueMatch)); Assert.Equal(expected.Count(), result.Count); foreach (var season in expected) { Assert.NotNull(result.SingleOrDefault(x => x.SeasonId == season.SeasonId)); } }