Пример #1
0
        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);
        }
Пример #2
0
        public void SaveTest(UserTestsDTO test)
        {
            var testModel = mapper.MapTo <UserTests>(test);

            testModel.CreatedOn = dateTime.GetDateTimeNow();
            userTests.Add(testModel);
            saver.SaveChanges();
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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));
        }
Пример #6
0
 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();
 }
Пример #7
0
        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();
        }
Пример #8
0
        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));
        }
Пример #9
0
 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);
     }
 }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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();
        }
Пример #13
0
        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();
        }
Пример #14
0
        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();
        }