public async Task Read_teams_returns_match_locations() { var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.TeamWithFullDetails.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(_databaseFixture.TeamWithFullDetails.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await teamDataSource.ReadTeams(null).ConfigureAwait(false); foreach (var team in _databaseFixture.Teams) { var result = results.SingleOrDefault(x => x.TeamId == team.TeamId); Assert.NotNull(result); foreach (var matchLocation in team.MatchLocations) { var resultMatchLocation = result.MatchLocations.SingleOrDefault(x => x.MatchLocationId == matchLocation.MatchLocationId); Assert.NotNull(resultMatchLocation); Assert.Equal(matchLocation.SecondaryAddressableObjectName, resultMatchLocation.SecondaryAddressableObjectName); Assert.Equal(matchLocation.PrimaryAddressableObjectName, resultMatchLocation.PrimaryAddressableObjectName); Assert.Equal(matchLocation.StreetDescription, resultMatchLocation.StreetDescription); Assert.Equal(matchLocation.Locality, resultMatchLocation.Locality); Assert.Equal(matchLocation.Town, resultMatchLocation.Town); Assert.Equal(matchLocation.AdministrativeArea, resultMatchLocation.AdministrativeArea); Assert.Equal(matchLocation.Postcode, resultMatchLocation.Postcode); Assert.Equal(matchLocation.Latitude, resultMatchLocation.Latitude); Assert.Equal(matchLocation.Longitude, resultMatchLocation.Longitude); } } }
public async Task Read_team_by_route_with_related_data_returns_basic_fields() { var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.TeamWithFullDetails.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(_databaseFixture.TeamWithFullDetails.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await teamDataSource.ReadTeamByRoute(_databaseFixture.TeamWithFullDetails.TeamRoute, true).ConfigureAwait(false); Assert.Equal(_databaseFixture.TeamWithFullDetails.TeamId, result.TeamId); Assert.Equal(_databaseFixture.TeamWithFullDetails.TeamName, result.TeamName); Assert.Equal(_databaseFixture.TeamWithFullDetails.TeamType, result.TeamType); Assert.Equal(_databaseFixture.TeamWithFullDetails.TeamRoute, result.TeamRoute); Assert.Equal(_databaseFixture.TeamWithFullDetails.PlayerType, result.PlayerType); Assert.Equal(_databaseFixture.TeamWithFullDetails.Introduction, result.Introduction); Assert.Equal(_databaseFixture.TeamWithFullDetails.AgeRangeLower, result.AgeRangeLower); Assert.Equal(_databaseFixture.TeamWithFullDetails.AgeRangeUpper, result.AgeRangeUpper); Assert.Equal(_databaseFixture.TeamWithFullDetails.ClubMark, result.ClubMark); Assert.Equal(_databaseFixture.TeamWithFullDetails.Facebook, result.Facebook); Assert.Equal(_databaseFixture.TeamWithFullDetails.Twitter, result.Twitter); Assert.Equal(_databaseFixture.TeamWithFullDetails.Instagram, result.Instagram); Assert.Equal(_databaseFixture.TeamWithFullDetails.YouTube, result.YouTube); Assert.Equal(_databaseFixture.TeamWithFullDetails.Website, result.Website); Assert.Equal(_databaseFixture.TeamWithFullDetails.PlayingTimes, result.PlayingTimes); Assert.Equal(_databaseFixture.TeamWithFullDetails.Cost, result.Cost); Assert.Equal(_databaseFixture.TeamWithFullDetails.PublicContactDetails, result.PublicContactDetails); Assert.Equal(_databaseFixture.TeamWithFullDetails.PrivateContactDetails, result.PrivateContactDetails); Assert.Equal(_databaseFixture.TeamWithFullDetails.UntilYear, result.UntilYear); Assert.Equal(_databaseFixture.TeamWithFullDetails.MemberGroupName, result.MemberGroupName); Assert.Equal(_databaseFixture.TeamWithFullDetails.MemberGroupKey, result.MemberGroupKey); }
public async Task Read_team_by_route_returns_seasons_with_competitions_and_match_types() { var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.TeamWithFullDetails.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(_databaseFixture.TeamWithFullDetails.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await teamDataSource.ReadTeamByRoute(_databaseFixture.TeamWithFullDetails.TeamRoute, true).ConfigureAwait(false); Assert.Equal(_databaseFixture.TeamWithFullDetails.Seasons.Count, result.Seasons.Count); foreach (var season in _databaseFixture.TeamWithFullDetails.Seasons) { var seasonResult = result.Seasons.SingleOrDefault(x => x.Season.SeasonId == season.Season.SeasonId); Assert.NotNull(seasonResult); Assert.Equal(season.Season.FromYear, seasonResult.Season.FromYear); Assert.Equal(season.Season.UntilYear, seasonResult.Season.UntilYear); Assert.Equal(season.Season.SeasonRoute, seasonResult.Season.SeasonRoute); Assert.Equal(season.Season.Competition.CompetitionId, seasonResult.Season.Competition.CompetitionId); Assert.Equal(season.Season.Competition.CompetitionName, seasonResult.Season.Competition.CompetitionName); Assert.Equal(season.Season.MatchTypes.Count, seasonResult.Season.MatchTypes.Count); foreach (var expectedMatchType in season.Season.MatchTypes) { Assert.Contains(expectedMatchType, season.Season.MatchTypes); } } }
public async Task Read_total_teams_supports_no_filter() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await teamDataSource.ReadTotalTeams(null).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count, result); }
public async Task Read_total_teams_supports_filter_by_inactive_teams() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { ActiveTeams = false }; var result = await teamDataSource.ReadTotalTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.UntilYear.HasValue), result); }
public async Task Read_total_teams_supports_case_insensitive_filter_by_administrative_area() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { Query = "CoUnTy" }; var result = await teamDataSource.ReadTotalTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.MatchLocations.Any(ml => ml.AdministrativeArea.Contains(query.Query, StringComparison.OrdinalIgnoreCase))), result); }
public async Task Read_total_teams_supports_case_insensitive_filter_by_team_name() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { Query = "DeTaIlS" }; var result = await teamDataSource.ReadTotalTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.TeamName.Contains(query.Query, StringComparison.OrdinalIgnoreCase)), result); }
public async Task Read_total_teams_supports_filter_by_excluding_club_teams() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { IncludeClubTeams = false }; var result = await teamDataSource.ReadTotalTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.Club == null), result); }
public async Task Read_team_by_route_returns_club() { var teamWithAClub = _databaseFixture.ClubWithTeamsAndMatchLocation.Teams.First(); var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(teamWithAClub.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(teamWithAClub.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await teamDataSource.ReadTeamByRoute(teamWithAClub.TeamRoute, true).ConfigureAwait(false); Assert.Equal(_databaseFixture.ClubWithTeamsAndMatchLocation.ClubName, result.Club.ClubName); Assert.Equal(_databaseFixture.ClubWithTeamsAndMatchLocation.ClubRoute, result.Club.ClubRoute); }
public async Task Read_total_teams_supports_filter_by_competition() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { CompetitionIds = new List <Guid> { _databaseFixture.TeamWithFullDetails.Seasons[0].Season.Competition.CompetitionId.Value } }; var result = await teamDataSource.ReadTotalTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.Seasons.Any(s => s.Season.Competition?.CompetitionId == _databaseFixture.TeamWithFullDetails.Seasons[0].Season.Competition.CompetitionId.Value)), result); }
public async Task Read_total_teams_supports_filter_by_excluded_teams() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { ExcludeTeamIds = new List <Guid> { _databaseFixture.TeamWithFullDetails.TeamId.Value } }; var result = await teamDataSource.ReadTotalTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count - 1, result); }
public async Task Read_total_teams_supports_filter_by_team_type() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { TeamTypes = new List <TeamType?> { TeamType.Representative } }; var result = await teamDataSource.ReadTotalTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.TeamType == TeamType.Representative), result); }
public async Task Read_teams_supports_no_filter() { var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.TeamWithFullDetails.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(_databaseFixture.TeamWithFullDetails.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await teamDataSource.ReadTeams(null).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count, result.Count); foreach (var team in _databaseFixture.Teams) { Assert.NotNull(result.SingleOrDefault(x => x.TeamId == team.TeamId)); } }
public async Task Read_teams_supports_filter_by_inactive_teams() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { ActiveTeams = false }; var result = await teamDataSource.ReadTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.UntilYear.HasValue), result.Count); foreach (var team in _databaseFixture.Teams.Where(x => x.UntilYear.HasValue)) { Assert.NotNull(result.SingleOrDefault(x => x.TeamId == team.TeamId)); } }
public async Task Read_teams_supports_case_insensitive_filter_by_town() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { Query = "ToWn" }; var result = await teamDataSource.ReadTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.MatchLocations.Any(ml => ml.Town.Contains(query.Query, StringComparison.OrdinalIgnoreCase))), result.Count); foreach (var team in _databaseFixture.Teams.Where(x => x.MatchLocations.Any(ml => ml.Town.Contains(query.Query, StringComparison.OrdinalIgnoreCase)))) { Assert.NotNull(result.SingleOrDefault(x => x.TeamId == team.TeamId)); } }
public async Task Read_minimal_team_by_route_returns_basic_fields() { var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.TeamWithMinimalDetails.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(_databaseFixture.TeamWithMinimalDetails.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var result = await teamDataSource.ReadTeamByRoute(_databaseFixture.TeamWithMinimalDetails.TeamRoute, false).ConfigureAwait(false); Assert.Equal(_databaseFixture.TeamWithMinimalDetails.TeamId, result.TeamId); Assert.Equal(_databaseFixture.TeamWithMinimalDetails.TeamName, result.TeamName); Assert.Equal(_databaseFixture.TeamWithMinimalDetails.TeamType, result.TeamType); Assert.Equal(_databaseFixture.TeamWithMinimalDetails.TeamRoute, result.TeamRoute); Assert.Equal(_databaseFixture.TeamWithMinimalDetails.UntilYear, result.UntilYear); Assert.Equal(_databaseFixture.TeamWithMinimalDetails.MemberGroupName, result.MemberGroupName); }
public async Task Read_teams_supports_filter_by_team_type() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { TeamTypes = new List <TeamType?> { TeamType.Representative } }; var result = await teamDataSource.ReadTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.TeamType == TeamType.Representative), result.Count); foreach (var team in _databaseFixture.Teams.Where(x => x.TeamType == TeamType.Representative)) { Assert.NotNull(result.SingleOrDefault(x => x.TeamId == team.TeamId)); } }
public async Task Read_teams_supports_filter_by_excluded_teams() { var routeNormaliser = new Mock <IRouteNormaliser>(); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var query = new TeamFilter { ExcludeTeamIds = new List <Guid> { _databaseFixture.TeamWithFullDetails.TeamId.Value } }; var result = await teamDataSource.ReadTeams(query).ConfigureAwait(false); Assert.Equal(_databaseFixture.Teams.Count(x => x.TeamId != _databaseFixture.TeamWithFullDetails.TeamId.Value), result.Count); foreach (var team in _databaseFixture.Teams.Where(x => x.TeamId != _databaseFixture.TeamWithFullDetails.TeamId.Value)) { Assert.NotNull(result.SingleOrDefault(x => x.TeamId == team.TeamId)); } }
public async Task Read_teams_sorts_inactive_last() { var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.TeamWithFullDetails.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(_databaseFixture.TeamWithFullDetails.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await teamDataSource.ReadTeams(null).ConfigureAwait(false); var expectedActiveStatus = true; foreach (var team in results) { // The first time an inactive team is seen, set a flag to say they must all be inactive if (expectedActiveStatus && team.UntilYear.HasValue) { expectedActiveStatus = false; } Assert.Equal(expectedActiveStatus, !team.UntilYear.HasValue); } Assert.False(expectedActiveStatus); }
public async Task Read_teams_returns_basic_fields() { var routeNormaliser = new Mock <IRouteNormaliser>(); routeNormaliser.Setup(x => x.NormaliseRouteToEntity(_databaseFixture.TeamWithFullDetails.TeamRoute, It.IsAny <Dictionary <string, string> >())).Returns(_databaseFixture.TeamWithFullDetails.TeamRoute); var teamDataSource = new SqlServerTeamDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await teamDataSource.ReadTeams(null).ConfigureAwait(false); foreach (var team in _databaseFixture.Teams) { var result = results.SingleOrDefault(x => x.TeamId == team.TeamId); Assert.NotNull(result); Assert.Equal(team.TeamName, result.TeamName); Assert.Equal(team.TeamRoute, result.TeamRoute); Assert.Equal(team.PlayerType, result.PlayerType); Assert.Equal(team.UntilYear, result.UntilYear); Assert.Equal(team.Introduction, result.Introduction); Assert.Equal(team.PlayingTimes, result.PlayingTimes); Assert.Equal(team.PublicContactDetails, result.PublicContactDetails); Assert.Equal(team.Website, result.Website); } }