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); }
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); }
public async Task NullViewModelReturnsBadRequest() { FilterQuestionPostRequestViewModel viewModel = null; var actionResponse = await controller.Index(viewModel).ConfigureAwait(false); Assert.IsType <BadRequestResult>(actionResponse); }
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); }
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}")); }