public async Task Read_player_identities_sorts_by_team_first_then_probability() { var routeNormaliser = new Mock <IRouteNormaliser>(); var playerDataSource = new SqlServerPlayerDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await playerDataSource.ReadPlayerIdentities(null).ConfigureAwait(false); Guid?expectedTeam = null; var previousTeams = new List <Guid>(); var previousProbability = int.MaxValue; foreach (var identity in results) { // The first time any team is seen, set a flag to say they must all be that team. // Record the teams already seen so that we can't switch back to a previous one. // Also reset the tracker that says probability must count down for the team. if (identity.Team.TeamId != expectedTeam && !previousTeams.Contains(identity.Team.TeamId.Value)) { expectedTeam = identity.Team.TeamId; previousTeams.Add(expectedTeam.Value); previousProbability = int.MaxValue; } Assert.Equal(expectedTeam, identity.Team.TeamId); Assert.True(identity.Probability <= previousProbability); previousProbability = identity.Probability.Value; } Assert.NotNull(expectedTeam); Assert.NotEqual(expectedTeam, previousTeams[0]); }
public async Task Read_player_identities_supports_filter_by_player_identity_id() { var routeNormaliser = new Mock <IRouteNormaliser>(); var playerDataSource = new SqlServerPlayerDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await playerDataSource.ReadPlayerIdentities(new PlayerFilter { PlayerIdentityIds = _databaseFixture.TestData.BowlerWithMultipleIdentities.PlayerIdentities.Select(x => x.PlayerIdentityId.Value).ToList() }).ConfigureAwait(false); Assert.Equal(_databaseFixture.TestData.BowlerWithMultipleIdentities.PlayerIdentities.Count, results.Count); foreach (var identity in _databaseFixture.TestData.BowlerWithMultipleIdentities.PlayerIdentities) { Assert.NotNull(results.SingleOrDefault(x => x.PlayerIdentityId == identity.PlayerIdentityId)); } }
public async Task Read_player_identities_supports_no_filter() { var routeNormaliser = new Mock <IRouteNormaliser>(); var playerDataSource = new SqlServerPlayerDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await playerDataSource.ReadPlayerIdentities(null).ConfigureAwait(false); Assert.Equal(_databaseFixture.TestData.PlayerIdentities.Count, results.Count); foreach (var identity in _databaseFixture.TestData.PlayerIdentities) { Assert.NotNull(results.SingleOrDefault(x => x.PlayerIdentityId == identity.PlayerIdentityId)); } }
public async Task Read_player_identities_supports_case_insensitive_filter_by_name() { var routeNormaliser = new Mock <IRouteNormaliser>(); var playerDataSource = new SqlServerPlayerDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var expected = _databaseFixture.TestData.BowlerWithMultipleIdentities.PlayerIdentities.First(); var results = await playerDataSource.ReadPlayerIdentities(new PlayerFilter { Query = expected.PlayerIdentityName.ToLower(CultureInfo.CurrentCulture).Substring(0, 5) + expected.PlayerIdentityName.ToUpperInvariant().Substring(5) }).ConfigureAwait(false); Assert.Single(results); Assert.Equal(expected.PlayerIdentityId, results[0].PlayerIdentityId); }
public async Task Read_player_identities_returns_team() { var routeNormaliser = new Mock <IRouteNormaliser>(); var playerDataSource = new SqlServerPlayerDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await playerDataSource.ReadPlayerIdentities(null).ConfigureAwait(false); foreach (var identity in _databaseFixture.TestData.PlayerIdentities) { var result = results.SingleOrDefault(x => x.PlayerIdentityId == identity.PlayerIdentityId); Assert.NotNull(result); Assert.Equal(identity.Team.TeamId, result.Team.TeamId); Assert.Equal(identity.Team.TeamName, result.Team.TeamName); } }
public async Task Read_player_identities_supports_filter_by_team_id() { var routeNormaliser = new Mock <IRouteNormaliser>(); var playerDataSource = new SqlServerPlayerDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await playerDataSource.ReadPlayerIdentities(new PlayerFilter { TeamIds = new List <Guid> { _databaseFixture.TestData.BowlerWithMultipleIdentities.PlayerIdentities[0].Team.TeamId.Value } }).ConfigureAwait(false); var expected = _databaseFixture.TestData.PlayerIdentities.Where(x => x.Team.TeamId == _databaseFixture.TestData.BowlerWithMultipleIdentities.PlayerIdentities[0].Team.TeamId.Value); Assert.Equal(expected.Count(), results.Count); foreach (var identity in expected) { Assert.NotNull(results.SingleOrDefault(x => x.PlayerIdentityId == identity.PlayerIdentityId)); } }
public async Task Read_player_identities_returns_basic_fields() { var routeNormaliser = new Mock <IRouteNormaliser>(); var playerDataSource = new SqlServerPlayerDataSource(_databaseFixture.ConnectionFactory, routeNormaliser.Object); var results = await playerDataSource.ReadPlayerIdentities(null).ConfigureAwait(false); foreach (var identity in _databaseFixture.TestData.BowlerWithMultipleIdentities.PlayerIdentities) { var result = results.SingleOrDefault(x => x.PlayerIdentityId == identity.PlayerIdentityId); Assert.NotNull(result); Assert.Equal(identity.PlayerIdentityName, result.PlayerIdentityName); Assert.Equal(identity.TotalMatches, result.TotalMatches); Assert.Equal(identity.FirstPlayed.Value.AccurateToTheMinute(), result.FirstPlayed.Value.AccurateToTheMinute()); Assert.Equal(identity.LastPlayed.Value.AccurateToTheMinute(), result.LastPlayed.Value.AccurateToTheMinute()); } }