public async Task Read_club_by_route_returns_teams_alphabetically_with_inactive_last()
        {
            var routeNormaliser = new Mock <IRouteNormaliser>();

            routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.ClubWithTeamsAndMatchLocation.ClubRoute, "clubs")).Returns(_databaseFixture.ClubWithTeamsAndMatchLocation.ClubRoute);
            var clubDataSource = new SqlServerClubDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object);

            var result = await clubDataSource.ReadClubByRoute(_databaseFixture.ClubWithTeamsAndMatchLocation.ClubRoute).ConfigureAwait(false);

            AssertTeamsSortedAlphabeticallyWithInactiveLast(result.Teams);
        }
        public async Task Read_clubs_supports_filter_by_team_id()
        {
            var routeNormaliser = new Mock <IRouteNormaliser>();
            var clubDataSource  = new SqlServerClubDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object);

            var result = await clubDataSource.ReadClubs(new ClubFilter { TeamIds = new List <Guid> {
                                                                             _databaseFixture.ClubWithTeamsAndMatchLocation.Teams[0].TeamId.Value
                                                                         } }).ConfigureAwait(false);

            Assert.Single(result);
            Assert.True(result[0].Teams.Any(x => x.TeamId == _databaseFixture.ClubWithTeamsAndMatchLocation.Teams[0].TeamId));
        }
        public async Task Read_clubs_sorts_teams_alphabetically_with_inactive_last()
        {
            var routeNormaliser = new Mock <IRouteNormaliser>();
            var clubDataSource  = new SqlServerClubDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object);

            var results = await clubDataSource.ReadClubs(null).ConfigureAwait(false);

            foreach (var club in results.Where(x => x.Teams.Count > 1))
            {
                AssertTeamsSortedAlphabeticallyWithInactiveLast(club.Teams);
            }
        }
        public async Task Read_clubs_supports_no_filter()
        {
            var routeNormaliser = new Mock <IRouteNormaliser>();
            var clubDataSource  = new SqlServerClubDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object);

            var results = await clubDataSource.ReadClubs(null).ConfigureAwait(false);

            Assert.Equal(_databaseFixture.Clubs.Count, results.Count);
            foreach (var club in _databaseFixture.Clubs)
            {
                Assert.NotNull(results.SingleOrDefault(x => x.ClubId == club.ClubId));
            }
        }
        public async Task Read_minimal_club_by_route_returns_basic_club_fields()
        {
            var routeNormaliser = new Mock <IRouteNormaliser>();

            routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.ClubWithMinimalDetails.ClubRoute, "clubs")).Returns(_databaseFixture.ClubWithMinimalDetails.ClubRoute);
            var clubDataSource = new SqlServerClubDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object);

            var result = await clubDataSource.ReadClubByRoute(_databaseFixture.ClubWithMinimalDetails.ClubRoute).ConfigureAwait(false);

            Assert.Equal(_databaseFixture.ClubWithMinimalDetails.ClubId, result.ClubId);
            Assert.Equal(_databaseFixture.ClubWithMinimalDetails.ClubName, result.ClubName);
            Assert.Equal(_databaseFixture.ClubWithMinimalDetails.ClubRoute, result.ClubRoute);
            Assert.Equal(_databaseFixture.ClubWithMinimalDetails.MemberGroupKey, result.MemberGroupKey);
            Assert.Equal(_databaseFixture.ClubWithMinimalDetails.MemberGroupName, result.MemberGroupName);
        }
        public async Task Read_clubs_returns_basic_club_fields()
        {
            var routeNormaliser = new Mock <IRouteNormaliser>();
            var clubDataSource  = new SqlServerClubDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object);

            var results = await clubDataSource.ReadClubs(null).ConfigureAwait(false);

            foreach (var club in _databaseFixture.Clubs)
            {
                var result = results.SingleOrDefault(x => x.ClubId == club.ClubId);

                Assert.NotNull(result);
                Assert.Equal(club.ClubName, result.ClubName);
                Assert.Equal(club.ClubRoute, result.ClubRoute);
                Assert.Equal(club.MemberGroupKey, result.MemberGroupKey);
                Assert.Equal(club.MemberGroupName, result.MemberGroupName);
            }
        }
        public async Task Read_clubs_returns_teams()
        {
            var routeNormaliser = new Mock <IRouteNormaliser>();
            var clubDataSource  = new SqlServerClubDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object);

            var results = await clubDataSource.ReadClubs(null).ConfigureAwait(false);

            foreach (var club in _databaseFixture.Clubs)
            {
                var resultClub = results.SingleOrDefault(x => x.ClubId == club.ClubId);

                foreach (var team in club.Teams)
                {
                    var resultTeam = resultClub.Teams.FirstOrDefault(x => x.TeamId == team.TeamId);
                    Assert.NotNull(resultTeam);

                    Assert.Equal(team.TeamName, resultTeam.TeamName);
                    Assert.Equal(team.TeamRoute, resultTeam.TeamRoute);
                    Assert.Equal(team.ClubMark, resultTeam.ClubMark);
                    Assert.Equal(team.UntilYear, resultTeam.UntilYear);
                }
            }
        }