public async Task UsersWithTheSameCorrectAnswersAndTheSameBonusHaveTheSamePoints() { //Arrange TestResultServiceTestBase testBase = new TestResultServiceTestBase(); TestResultRepository testResultRepository = await testBase.GetTestResultRepositoryAsync(); var service = new TestResultService(testResultRepository, new CorrectAnswerPointsRule(), new BonusPointsRule(), new AnsweringTimePlaceRule()); var expectedResult = testBase.GetExpectedWeek1ResultModel(); //Act service.CalculateWeeklyResults(1); var results = testResultRepository.GetFinalResults(); //Assert Assert.Equal( results.Where(x => x.UserId == UserModel.userA.Id).Select(x => x.Week1Points).FirstOrDefault(), results.Where(x => x.UserId == UserModel.userB.Id).Select(x => x.Week1Points).FirstOrDefault()); Assert.Equal( expectedResult.Where(x => x.UserId == UserModel.userA.Id).Select(x => x.Week1Points).FirstOrDefault(), results.Where(x => x.UserId == UserModel.userA.Id).Select(x => x.Week1Points).FirstOrDefault()); }
public async Task UsersWithNoCorrectAnswersHaveZeroPoints() { //Arrange TestResultServiceTestBase testBase = new TestResultServiceTestBase(); TestResultRepository testResultRepository = await testBase.GetTestResultRepositoryAsync(); var service = new TestResultService(testResultRepository, new CorrectAnswerPointsRule(), new BonusPointsRule(), new AnsweringTimePlaceRule()); var expectedResult = testBase.GetExpectedWeek1ResultModel(); //Act service.CalculateWeeklyResults(1); var results = testResultRepository.GetFinalResults(); //Assert var expectedResultItems = expectedResult.Where(x => x.Week1Points == 0).Select(x => x.UserId).ToList(); var resultItems = results.Where(x => x.Week1Points == 0).Select(x => x.UserId).ToList(); Assert.Equal(expectedResultItems.Count, resultItems.Count); foreach (var item in expectedResultItems) { Assert.Contains(item, resultItems); } }