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); }
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); } }
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); }
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); }
public async Task Update_IsCompleteIsTrue() { var set = SetUtility.Create(dbContext); var matchForms = CreateMatchForms(3); await testObj.Update(set.ID, matchForms); Assert.IsTrue(set.IsComplete); }
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); }
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); }
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); }
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 }
//[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); }
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); }
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; } }
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); }
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); }
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 }
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); }