Exemple #1
0
        public async Task GenerateSchedule_AlreadyHasSets_ClearsOldSets()
        {
            var(season, participants) = SeasonUtility.CreateSeason(dbContext, 2);

            var oldSet = SetUtility.Create(dbContext, participants[0].ID, participants[1].ID, season.LeagueID);

            season.Sets = new HashSet <Set> {
                oldSet
            };

            var newSet = new Set {
                LeagueID  = season.LeagueID,
                SeasonID  = season.ID,
                DueDate   = DateTime.Now.AddDays(1),
                Player1ID = participants[0].ID,
                Player2ID = participants[1].ID,
            };

            testObj.generatedSets = new HashSet <Set> {
                newSet
            };

            await testObj.GenerateScheduleAsync(season, dbContext);

            Assert.AreEqual(1, season.Sets.Count);
        }
Exemple #2
0
        public async Task UpdateStandings_Ties_NoTiedStandings(params int[] seasonPoints)
        {
            MockTieBreak(arg =>
            {
                var points = 1;
                foreach (var entry in arg)
                {
                    entry.Key.TieBreakerPoints = points;
                    ++points;
                }
            });

            var season = SeasonUtility.CreateSeason(dbContext, 4).season;

            dbContext.UpdateRange(season.Participants);
            for (int i = 0; i < seasonPoints.Length; i++)
            {
                season.Participants[i].Points = seasonPoints[i];
            }
            dbContext.SaveChanges();

            var set = SetUtility.Create(dbContext, season.Participants[0], season.Participants[1], season.LeagueID);

            await testObj.UpdateStandings(set.ID);

            season.Participants.Sort();
            for (var i = 0; i < season.Participants.Count; i++)
            {
                Assert.AreEqual(4 - i, season.Participants[i].Standing);
            }
        }
Exemple #3
0
        public async Task UpdateStandings_3WayTieBrokenWithWin_2TiedUsersHaveCorrectTieBreakScores()
        {
            var season  = CreateSeason((1, 5, 1000), (2, 5, 100), (3, 5, 10), (4, 2, 0));
            var player1 = season.Participants[0];
            var player2 = season.Participants[1];
            var player3 = season.Participants[2];
            var player4 = season.Participants[3];

            MockTieBreak(arg =>
            {
                arg.First(p => p.Key.ID == player1.ID).Key.TieBreakerPoints = 100;
                arg.First(p => p.Key.ID == player3.ID).Key.TieBreakerPoints = 10;
            });

            pointCalculator.CalculatePointDeltas(player2, player4).Returns((2, 1));

            var set = SetUtility.Create(dbContext, player2, player4, season.LeagueID);

            DbContextUtility.UpdateAndSave(dbContext, set, () =>
            {
                set.Player1Score = 1;
                set.Player2Score = 0;
            });

            await testObj.UpdateStandings(set.ID);

            Assert.Greater(player1.TieBreakerPoints, 0);
            Assert.Greater(player3.TieBreakerPoints, 0);

            Assert.AreEqual(0, player2.TieBreakerPoints);
        }
Exemple #4
0
        public async Task Update_FirstMatches_CreatesMatchesAndMatchCharacters()
        {
            var set = SetUtility.Create(dbContext);

            var matchForms = CreateMatchForms(3);
            await testObj.Update(set.ID, matchForms);

            Assert.AreEqual(3, set.Matches.Count);
        }
Exemple #5
0
        public async Task Update_IsCompleteIsTrue()
        {
            var set = SetUtility.Create(dbContext);

            var matchForms = CreateMatchForms(3);
            await testObj.Update(set.ID, matchForms);

            Assert.IsTrue(set.IsComplete);
        }
Exemple #6
0
        public async Task Update_RemoveMatches_DeletesOldMatchesAndMatchCharacters()
        {
            var set        = SetUtility.Create(dbContext);
            var matchForms = CreateMatchForms(3);
            await testObj.Update(set.ID, matchForms);

            await testObj.Update(set.ID, new MatchForm[0]);

            Assert.AreEqual(0, set.Matches.Count);
        }
Exemple #7
0
        public async Task Update_OldSet_LeagueUserSetCountNotChanged()
        {
            var set        = SetUtility.Create(dbContext);
            var matchForms = CreateMatchForms(3);

            await testObj.Update(set.ID, matchForms);

            Assert.AreEqual(1, set.Player1.SetCount);
            Assert.AreEqual(1, set.Player2.SetCount);
        }
Exemple #8
0
        public async Task Get_HasSet_Ok()
        {
            var set = SetUtility.Create(dbContext);

            var result = await testObj.Get(set.ID);

            var resultObj = result.GetObject <SetDto>();

            ControllerUtility.AssertStatusCode(result, HttpStatusCode.OK);
            Assert.AreEqual(set.ID, resultObj.ID);
        }
Exemple #9
0
        public async Task Update_IsSeasonSet_UpdatesSeasonPoints()
        {
            var set = SetUtility.Create(dbContext);

            var matchForms = CreateMatchForms(3);
            await testObj.Update(set.ID, matchForms);

#pragma warning disable 4014
            seasonService.Received(1).UpdateStandings(set.ID);
#pragma warning restore 4014
        }
Exemple #10
0
        //[Test]
        //public async Task GetSets_NoLeagueUser_NotFound()
        //{
        //    var result = await testObj.GetSets(0);

        //    ControllerUtility.AssertStatusCode(result, HttpStatusCode.NotFound);
        //}

        //[Test]
        //public async Task GetSets_HasSets_Ok()
        //{
        //    var members = CreateMembersWithSets(2);

        //    var result = await testObj.GetSets(members[0].ID);

        //    ControllerUtility.AssertStatusCode(result, HttpStatusCode.OK);
        //}

        //[TestCase(0)]
        //[TestCase(1)]
        //[TestCase(10)]
        //public async Task GetSets_HasSets_ReturnSets(int setCount)
        //{
        //    var members = CreateMembersWithSets(setCount);

        //    var result = await testObj.GetSets(members[0].ID);
        //    var resultObj = result.GetObject<SetDto[]>();

        //    Assert.AreEqual(setCount, resultObj.Length);
        //}

        private List <LeagueUser> CreateMembersWithSets(int setCount)
        {
            var league  = LeagueUtility.CreateLeague(dbContext);
            var members = LeagueUtility.AddUsersToLeague(league, 2, dbContext);

            for (var i = 0; i < setCount; ++i)
            {
                SetUtility.Create(dbContext, members[0].ID, members[1].ID, league.ID);
            }

            return(members);
        }
Exemple #11
0
        private (Set set, SubmitRequest request) CreateSet()
        {
            var set = SetUtility.Create(dbContext);

            set.Matches = new List <Match>();
            setService.Update(set.ID, Arg.Any <MatchForm[]>()).Returns(set);
            var request = new SubmitRequest
            {
                SetID = set.ID
            };

            return(set, request);
        }
Exemple #12
0
        private void CreateSets(League league, Season season)
        {
            var firstMember = league.Members[0];

            for (var i = 1; i < league.Members.Count; i++)
            {
                var nextMember = league.Members[i].ID;
                var set        = SetUtility.Create(dbContext, firstMember.ID, nextMember, league.ID, season);
                set.IsComplete   = true;
                set.Player1Score = 2;
                set.Player2Score = 1;
            }
        }
Exemple #13
0
        public async Task UpdateStandings_TieBrokenWithWin_TieBreakScoresReset()
        {
            var season  = CreateSeason((1, 5, 100), (2, 5, 10));
            var player1 = season.Participants[0];
            var player2 = season.Participants[1];

            var set = SetUtility.Create(dbContext, player1, player2, season.LeagueID);

            await testObj.UpdateStandings(set.ID);

            Assert.AreEqual(0, player1.TieBreakerPoints);
            Assert.AreEqual(0, player2.TieBreakerPoints);
        }
Exemple #14
0
        public async Task Update_HasWinner_UpdateScore()
        {
            var set = SetUtility.Create(dbContext);

            var matchForms = CreateMatchFormsWithScores(1, 2, 1);

            matchForms.AddRange(CreateMatchFormsWithScores(2, 0, 2));

            await testObj.Update(set.ID, matchForms);

            Assert.AreEqual(1, set.Player1Score);
            Assert.AreEqual(2, set.Player2Score);
        }
Exemple #15
0
        public async Task Update_IsNotSeasonSet_DoesNotUpdateSeasonPoints()
        {
            var set = SetUtility.Create(dbContext);

            set.SeasonID = null;

            var matchForms = CreateMatchForms(3);
            await testObj.Update(set.ID, matchForms);

#pragma warning disable 4014
            seasonService.DidNotReceive().UpdateStandings(set.ID);
#pragma warning restore 4014
        }
Exemple #16
0
        public async Task UpdateStandings_Newcomer_PointsUpdated()
        {
            var league         = CreateLeague(2);
            var player1        = league.Members[0];
            var originalPoints = player1.Points;

            var set = SetUtility.Create(dbContext, player1.ID, league.Members[1].ID, league.ID);

            DbContextUtility.UpdateAndSave(dbContext, set, () => { set.IsComplete = true; });

            pointService.CalculatePointDeltas(0, 0, false).ReturnsForAnyArgs((1, -1));

            await testObj.UpdateStandings(league.ID);

            Assert.AreNotEqual(originalPoints, player1.Points);
        }