public async Task <IActionResult> Index(FilterQuestionIndexRequestViewModel viewModel)
        {
            if (viewModel == null)
            {
                return(BadRequest());
            }

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

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

            var assessment = await apiService.GetAssessment().ConfigureAwait(false);

            if (!assessment.IsComplete && !assessment.IsFilterAssessment)
            {
                return(RedirectTo("assessment/return"));
            }

            if (viewModel.QuestionNumber == 0)
            {
                var filterAssessment = await apiService.FilterAssessment(viewModel.JobCategoryName).ConfigureAwait(false);

                return(RedirectTo($"{viewModel.AssessmentType}/filterquestions/{viewModel.JobCategoryName}/{filterAssessment.QuestionNumber}"));
            }

            var response = await GetQuestion(viewModel.JobCategoryName, viewModel.QuestionNumber).ConfigureAwait(false);

            return(View(response));
        }
コード例 #2
0
        public async Task NullViewModelReturnsBadRequest()
        {
            FilterQuestionIndexRequestViewModel viewModel = null;
            var actionResponse = await controller.Index(viewModel).ConfigureAwait(false);

            Assert.IsType <BadRequestResult>(actionResponse);
        }
コード例 #3
0
        public async Task WhenAnsweredReturnsView()
        {
            var viewModel = new FilterQuestionIndexRequestViewModel()
            {
                QuestionNumber = 1
            };

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

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

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

            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);
        }
コード例 #5
0
        public async Task WhenNotCompletedReturnsToAssessment()
        {
            var assessmentResponse = new GetAssessmentResponse()
            {
                MaxQuestionsCount = 3, RecordedAnswersCount = 2
            };
            var viewModel = new FilterQuestionIndexRequestViewModel();

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

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

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

            Assert.Equal($"~/{RouteName.Prefix}/assessment/return", redirectResult.Url);
        }
コード例 #6
0
        public async Task WhenNotAnsweredReturnsView()
        {
            var viewModel = new FilterQuestionIndexRequestViewModel()
            {
                JobCategoryName = "TestCategory", QuestionNumber = 0, AssessmentType = "short"
            };

            A.CallTo(() => sessionService.HasValidSession()).Returns(true);
            A.CallTo(() => assessmentService.FilterAssessment(A <string> .Ignored)).Returns(new FilterAssessmentResponse()
            {
                QuestionNumber = 1
            });

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

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

            Assert.Equal($"~/{RouteName.Prefix}/{viewModel.AssessmentType}/filterquestions/{viewModel.JobCategoryName}/1", redirectResult.Url);
        }