public IActionResult TakeTest(TestRequestViewModel takeTestRequestViewModel)
        {
            var userId    = this.userManager.GetUserId(this.HttpContext.User);
            var isOverdue = this.userTestService.CheckForOverdueTestInProgress(userId);

            if (isOverdue)
            {
                return(RedirectToAction("Index"));
            }

            if (ModelState.IsValid)
            {
                var testId       = takeTestRequestViewModel.Id;
                var submitedTest = this.mapper.MapTo <TestRequestDto>(takeTestRequestViewModel);


                this.answerService.AddAnswersToUser(userId, submitedTest.Questions);

                var isPassed = this.testService
                               .IsTestPassed(testId, submitedTest,
                                             this.testService.GetTestQuestionsWithAnswers(testId));

                this.userTestService.SubmitUserTest(testId,
                                                    userId, isPassed);

                TempData["Success-Message"] = "Your test was submited!";

                return(RedirectToAction("Index"));
            }

            return(View(takeTestRequestViewModel));
        }
Ejemplo n.º 2
0
        public void POSTTakeTestReturnsRedirectToAction_WhenModelStateIsValid()
        {
            var fakeHttpContext = new Mock <HttpContext>();
            var fakeIdentity    = new GenericIdentity("User");
            var principal       = new GenericPrincipal(fakeIdentity, null);

            fakeHttpContext.Setup(t => t.User).Returns(principal);

            var tempDataMock = new Mock <ITempDataDictionary>();

            tempDataMock.Setup(x => x["Success - Message"])
            .Returns("Your test was submited!");


            var context = new ControllerContext
            {
                HttpContext = fakeHttpContext.Object
            };


            var id = new Guid().ToString();
            var takeTestRequestVM = new TestRequestViewModel()
            {
                CategoryName = "test",
                Id           = id,
                Questions    = new List <QuestionResponseModel>()
            };

            var testRequestDto = new TestRequestDto();

            this.mapperMock.Setup(x =>
                                  x.MapTo <TestRequestDto>(takeTestRequestVM))
            .Returns(testRequestDto);


            var sut = new HomeController(mapperMock.Object, testServiceMock.Object, userManagerMock.Object,
                                         questionServiceMock.Object, categoryServiceMock.Object, userTestServiceMock.Object,
                                         userAnswerServiceMock.Object)
            {
                //Set your controller ControllerContext with fake context
                ControllerContext = context,
                TempData          = tempDataMock.Object
            };

            // Act
            var result = sut.TakeTest(takeTestRequestVM) as RedirectToActionResult;

            // Assert
            Assert.AreEqual(result.ActionName, "Index");

            //var model = result.Model as TestRequestViewModel;


            //Assert.IsInstanceOfType(result, typeof(ViewResult));
            //Assert.IsNotNull(result);
            //Assert.AreEqual(model.Id, id);
        }
Ejemplo n.º 3
0
        public void POSTTakeTestCallsUserTestServiceSubmitTest_WhenModelStateIsValid()
        {
            var fakeHttpContext = new Mock <HttpContext>();
            var fakeIdentity    = new GenericIdentity("User");
            var principal       = new GenericPrincipal(fakeIdentity, null);

            fakeHttpContext.Setup(t => t.User).Returns(principal);

            var tempDataMock = new Mock <ITempDataDictionary>();

            tempDataMock.Setup(x => x["Success - Message"])
            .Returns("Your test was submited!");


            var context = new ControllerContext
            {
                HttpContext = fakeHttpContext.Object
            };


            var id = new Guid().ToString();
            var takeTestRequestVM = new TestRequestViewModel()
            {
                CategoryName = "test",
                Id           = id,
                Questions    = new List <QuestionResponseModel>()
            };

            var testRequestDto = new TestRequestDto();

            this.mapperMock.Setup(x =>
                                  x.MapTo <TestRequestDto>(takeTestRequestVM))
            .Returns(testRequestDto);

            this.userTestServiceMock.Setup(
                x => x.SubmitUserTest(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>()))
            .Verifiable();


            var sut = new HomeController(mapperMock.Object, testServiceMock.Object, userManagerMock.Object,
                                         questionServiceMock.Object, categoryServiceMock.Object, userTestServiceMock.Object,
                                         userAnswerServiceMock.Object)
            {
                //Set your controller ControllerContext with fake context
                ControllerContext = context,
                TempData          = tempDataMock.Object
            };

            // Act
            var result = sut.TakeTest(takeTestRequestVM);

            // Assert
            this.userTestServiceMock.Verify(
                x => x.SubmitUserTest(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>()), Times.Once);
        }
Ejemplo n.º 4
0
 public IActionResult Test(TestRequestViewModel model)
 {
     model.ComputeHash();
     ViewBag.Href = $"Index?id={model.GlobalUid}&p={model.P}&g={model.G}&h={model.H}";
     return(View(model));
 }