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));
        }
        public async Task FilterAssessmentCallsFilterAssessmentForCurrentSession()
        {
            var sessionId      = "session1";
            var jobCategory    = "sports";
            var filterResponse = new FilterAssessmentResponse()
            {
                SessionId = sessionId
            };

            A.CallTo(() => sessionService.GetSessionId()).Returns(sessionId);
            A.CallTo(() => assessmentApiService.FilterAssessment(sessionId, jobCategory)).Returns(filterResponse);

            var response = await assessmentService.FilterAssessment(jobCategory);

            A.CallTo(() => assessmentApiService.FilterAssessment(sessionId, jobCategory)).MustHaveHappenedOnceExactly();
            Assert.Equal(sessionId, response.SessionId);
        }
Ejemplo n.º 3
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);
        }