public void Publish_Calls_UtaServiceSaveChanges() { //arrange var categoryName = "Petko"; var someUserTestDto = new UserTestsDTO { Category = categoryName, UserId = correctGuidAsString }; var fakeUserTest = new UserTests(); mapperMock.Setup(x => x.MapTo <UserTests>(It.IsAny <UserTestsDTO>())).Returns(fakeUserTest); var fakeUserTests = new List <UserTests> { new UserTests { UserId = correctGuidAsString, Id = wrongGuid, Test = new Test { Category = new Category { Name = categoryName } } } }.AsQueryable(); repoUserTestsMock.Setup(x => x.All).Returns(fakeUserTests); // act fakeUserTestsService.Publish(someUserTestDto); // assert utaServiceMock.Verify(x => x.SaveQuestionAnswers(It.IsAny <UserTestsDTO>()), Times.Once); }
public void SaveTest(UserTestsDTO test) { var testModel = mapper.MapTo <UserTests>(test); testModel.CreatedOn = dateTime.GetDateTimeNow(); userTests.Add(testModel); saver.SaveChanges(); }
public void SaveTest_Calls_GetDateTimeNow() { //arrange var someUserTestDto = new UserTestsDTO(); var fakeUserTest = new UserTests(); mapperMock.Setup(x => x.MapTo <UserTests>(It.IsAny <UserTestsDTO>())).Returns(fakeUserTest); // act fakeUserTestsService.SaveTest(someUserTestDto); // assert dateTimeProviderMock.Verify(x => x.GetDateTimeNow(), Times.Once); }
public void SaveTest_Calls_RepoAdd() { //arrange var someUserTestDto = new UserTestsDTO(); var fakeUserTest = new UserTests(); mapperMock.Setup(x => x.MapTo <UserTests>(It.IsAny <UserTestsDTO>())).Returns(fakeUserTest); // act fakeUserTestsService.SaveTest(someUserTestDto); // assert repoUserTestsMock.Verify(x => x.Add(It.IsAny <UserTests>()), Times.Once); }
public void GetUserTestId_ThrowWhen_CategoryNameIsNull() { //arrange var someUserTestDto = new UserTestsDTO { UserId = correctGuidAsString }; var fakeUserTest = new UserTests(); mapperMock.Setup(x => x.MapTo <UserTests>(It.IsAny <UserTestsDTO>())).Returns(fakeUserTest); // act & assert Assert.ThrowsException <ArgumentNullException>(() => fakeUserTestsService.Publish(someUserTestDto)); }
public void SaveQuestionAnswers(UserTestsDTO test) { foreach (var qa in test.Questions) { var utaToAdd = new UserTestAnswers { UserTestId = test.UserTestId, AnswerId = qa.SelectedAnswerId }; userTestAnswers.Add(utaToAdd); } saver.SaveChanges(); }
public void SaveTest(UserTestsDTO test) { if (test == null) { throw new ArgumentNullException(nameof(test)); } var testModel = mapper.MapTo <UserTests>(test); testModel.CreatedOn = dateTime.GetDateTimeNow(); userTests.Add(testModel); saver.SaveChanges(); }
public void GetUserTestId_ThrowWhen_UserIdNull() { //arrange var categoryName = "Petko"; var someUserTestDto = new UserTestsDTO { Category = categoryName, }; var fakeUserTest = new UserTests(); mapperMock.Setup(x => x.MapTo <UserTests>(It.IsAny <UserTestsDTO>())).Returns(fakeUserTest); // act & assert Assert.ThrowsException <ArgumentNullException>(() => fakeUserTestsService.Publish(someUserTestDto)); }
public SolveTestDTO GetCorrectSolveTest(string userId, string category) { if (this.UserStartedTest(userId, category)) { var test = this.GetTestFromUserIdAndCategory(userId, category); var solveTestDto = mapper.MapTo <SolveTestDTO>(test); solveTestDto.Questions = shuffler.Shuffle(test.Questions.ToList()); var testAllowedTime = Convert.ToDouble(test.TimeInMinutes); var startedTime = test.CreatedOn; if (this.TestIsSubmitted(userId, category)) { throw new CategoryDoneException(); //RedirectToAction("CategoryDone", "Solve") } var endTime = startedTime.Value.AddMinutes(testAllowedTime); var remainingTime = Math.Round((endTime - dateTime.GetDateTimeNow()).TotalSeconds); solveTestDto.Category = category; solveTestDto.RemainingTime = int.Parse(remainingTime.ToString()); if (remainingTime < 0) { throw new TimeUpNeverSubmittedException(); //RedirectToAction("TimeUpNotSubmitted", "Solve") } return(solveTestDto); } else { var categoryId = categoriesService.GetIdByCategoryName(category); var randomTest = testService.GetRandomTestFromCategory(categoryId); var solveTestDto = mapper.MapTo <SolveTestDTO>(randomTest); //shuffling start here solveTestDto.Questions = shuffler.Shuffle(randomTest.Questions.ToList()); // add the test in base on creation var saveThisTestCreation = new UserTestsDTO { UserId = userId, Category = category, TestId = randomTest.Id }; this.SaveTest(saveThisTestCreation); //added the up solveTestDto.Category = category; solveTestDto.CreatedOn = dateTime.GetDateTimeNow(); Convert.ToInt32(((dateTime.GetDateTimeNow().AddMinutes(randomTest.TimeInMinutes) - dateTime.GetDateTimeNow()).TotalSeconds)); solveTestDto.RemainingTime = randomTest.TimeInMinutes * 60;//in seconds return(solveTestDto); } }
public void SaveQuestionAnswers_Calls_RepoAdd() { //arrange var fakeUserTestsDto = new UserTestsDTO { Questions = new Collection <QuestionDTO> { new QuestionDTO() } }; //act fakeUserTestAnswersService.SaveQuestionAnswers(fakeUserTestsDto); //assert repoUserTestAnswersMock.Verify(x => x.Add(It.IsAny <UserTestAnswers>()), Times.Once); }
public void SaveQuestionAnswers_SaverSaveChangesCalled() { //arrange var fakeUserTestsDto = new UserTestsDTO { Questions = new Collection <QuestionDTO> { new QuestionDTO(), new QuestionDTO(), new QuestionDTO() } }; //act fakeUserTestAnswersService.SaveQuestionAnswers(fakeUserTestsDto); //assert saverMock.Verify(x => x.SaveChanges(), Times.Once); }
public void SaveQuestionAnswers(UserTestsDTO test) { if (test == null) { throw new ArgumentNullException(nameof(test)); } foreach (var qa in test.Questions) { var utaToAdd = new UserTestAnswers { UserTestId = test.UserTestId, AnswerId = qa.SelectedAnswerId }; userTestAnswers.Add(utaToAdd); } saver.SaveChanges(); }
public void Publish(UserTestsDTO test) { if (test == null) { throw new ArgumentNullException(nameof(test)); } var testModel = mapper.MapTo <UserTests>(test); test.UserTestId = this.GetUserTestId(test.UserId, test.Category); utaService.SaveQuestionAnswers(test); var score = this.utaService.GetResult(test.UserId, test.Category); var updatingtest = userTests.All.FirstOrDefault (x => x.TestId == test.TestId && x.UserId == test.UserId); updatingtest.ExecutionTime = testModel.ExecutionTime; updatingtest.Score = score; updatingtest.Submitted = true; saver.SaveChanges(); }
public void Publish(UserTestsDTO test) { var testModel = mapper.MapTo <UserTests>(test); test.UserTestId = this.GetUserTestId(test.UserId, test.Category); utaService.SaveQuestionAnswers(test); var score = this.utaService.GetResult(test.UserId, test.Category); //testModel.Score = score; //userTests.Update(testModel); //saver.SaveChanges(); //Update doesnt work "cannot track many instances of same type" var updatingtest = userTests.All.FirstOrDefault(x => x.TestId == test.TestId && x.UserId == test.UserId); updatingtest.ExecutionTime = testModel.ExecutionTime; updatingtest.Score = score; updatingtest.SerializedAnswers = testModel.SerializedAnswers; updatingtest.Submitted = true; saver.SaveChanges(); }