Esempio n. 1
0
        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]);
        }
Esempio n. 2
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));
            }
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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));
            }
        }
Esempio n. 7
0
        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());
            }
        }