示例#1
0
        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);
        }
示例#2
0
        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));
            }
        }
示例#3
0
        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));
            }
        }
示例#4
0
        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));
            }
        }
示例#5
0
        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));
            }
        }
示例#6
0
        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));
            }
        }
示例#7
0
        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);
            }
        }
示例#8
0
        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));
            }
        }