コード例 #1
0
        public async Task WhenAnswerIsProvidedButAnswerIsNotRegisteredReturnsView()
        {
            var assessmentType     = "short";
            var jobCategoryName    = "sales";
            var questionNumberReal = 1;
            var answer             = "answer";
            var answerResponse     = new PostAnswerResponse()
            {
                IsComplete = false, IsSuccess = false
            };
            var viewModel = new FilterQuestionPostRequestViewModel()
            {
                AssessmentType     = assessmentType,
                JobCategoryName    = jobCategoryName,
                Answer             = answer,
                QuestionNumberReal = questionNumberReal,
            };

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);
            A.CallTo(() => assessmentService.AnswerQuestion(assessmentType, questionNumberReal, questionNumberReal, answer)).Returns(answerResponse);

            var actionResponse = await controller.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <ViewResult>(actionResponse);
        }
コード例 #2
0
        public async Task WhenAnsweredRedirectsToCorrectNextView(bool isComplete, string expectedRedirect)
        {
            var assessmentType        = "short";
            var jobCategoryName       = "sales";
            var questionNumberReal    = 1;
            var questionNumberCounter = 1;
            var answer         = "answer";
            var answerResponse = new PostAnswerResponse()
            {
                IsComplete = isComplete, IsSuccess = true
            };
            var viewModel = new FilterQuestionPostRequestViewModel()
            {
                AssessmentType        = assessmentType,
                JobCategoryName       = jobCategoryName,
                Answer                = answer,
                QuestionNumberReal    = questionNumberReal,
                QuestionNumberCounter = questionNumberCounter,
            };

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);

            A.CallTo(() => assessmentService.AnswerQuestion(jobCategoryName, questionNumberReal, questionNumberReal, answer)).Returns(answerResponse);

            var actionResponse = await controller.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <RedirectResult>(actionResponse);
            var redirectResult = actionResponse as RedirectResult;

            Assert.Equal($"~/{RouteName.Prefix}/{assessmentType}/filterquestions/{jobCategoryName}/{expectedRedirect}", redirectResult.Url);
        }
コード例 #3
0
        public async Task NullViewModelReturnsBadRequest()
        {
            FilterQuestionPostRequestViewModel viewModel = null;
            var actionResponse = await controller.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <BadRequestResult>(actionResponse);
        }
コード例 #4
0
        public async Task IfModelStateInvalidReturnsBackToQuestion()
        {
            var viewModel = new FilterQuestionPostRequestViewModel();

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);
            controller.ModelState.AddModelError("key", "Test Error");

            var actionResponse = await controller.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <ViewResult>(actionResponse);
        }
コード例 #5
0
        public async Task WhenNoSessionIdRedirectsToRoot()
        {
            var viewModel = new FilterQuestionPostRequestViewModel();

            A.CallTo(() => sessionService.HasValidSession()).Returns(false);

            var actionResponse = await controller.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <RedirectResult>(actionResponse);
            var redirectResult = actionResponse as RedirectResult;

            Assert.Equal($"~/{RouteName.Prefix}/", redirectResult.Url);
        }
        public async Task <IActionResult> Index(FilterQuestionPostRequestViewModel viewModel)
        {
            if (viewModel == null)
            {
                return(BadRequest());
            }

            var hasSessionId = await HasSessionId().ConfigureAwait(false);

            if (!hasSessionId)
            {
                return(RedirectToRoot());
            }

            if (!ModelState.IsValid)
            {
                var response = await GetQuestion(viewModel.JobCategoryName, viewModel.QuestionNumberCounter).ConfigureAwait(false);

                return(View(response));
            }

            var answerResponse = await apiService.AnswerQuestion(viewModel.JobCategoryName, viewModel.QuestionNumberReal, viewModel.QuestionNumberCounter, viewModel.Answer).ConfigureAwait(false);

            if (answerResponse == null)
            {
                return(BadRequest());
            }

            if (!answerResponse.IsSuccess)
            {
                ModelState.AddModelError("Answer", "Unable to register answer");
                var response = await GetQuestion(viewModel.JobCategoryName, viewModel.QuestionNumberCounter).ConfigureAwait(false);

                return(View(response));
            }

            if (answerResponse.IsComplete)
            {
                return(RedirectTo($"{viewModel.AssessmentType}/filterquestions/{viewModel.JobCategoryName}/complete"));
            }

            return(RedirectTo($"{viewModel.AssessmentType}/filterquestions/{viewModel.JobCategoryName}/{viewModel.QuestionNumberCounter + 1}"));
        }