public virtual ActionResult Index(QuestionViewModel model, bool?continueButton, Guid?chosenOption, Guid assessmentId) { if (ModelState.IsValid) { if (ContinueClicked(continueButton)) { if (model.ChosenOption.HasValue) { var status = _workflowHandler.SetAssessmentNextStep(model.AssessmentId, model.ChosenOption.Value, model.FurtherInformationAnswer); var actionResult = RedirectAssessment(model, status); if (Request.IsAjaxRequest()) { return(Json(new { Redirect = _urlHelper.RouteUrl(actionResult.RouteValues) })); } return(actionResult); } } } if (OptionClicked(chosenOption)) { model = _questionViewModelBuilder.UpdateQuestionViewModel(model, chosenOption.Value); ModelState.Remove("DisplayFurtherInformationQuestion"); } if (Request.IsAjaxRequest()) { return(Json(new { Html = _partialViewRenderer.RenderPartialViewToString(ControllerContext, ViewData, TempData, MVC.Question.Views._OptionsPartial, model), Valid = ModelState.IsValid })); } return(View(model)); }
public void IndexPOST_GivenValidModelAndContinueClicked_WorkflowHandlerShouldBeCalled() { var assessmentId = Guid.NewGuid(); var optionId = Guid.NewGuid(); const string furtherInfo = "info"; var model = new QuestionViewModel() { AssessmentId = assessmentId, ChosenOption = optionId, FurtherInformationAnswer = furtherInfo }; A.CallTo(() => _workflowHandler.SetAssessmentNextStep(A <Guid> ._, A <Guid> ._, A <string> ._)) .Returns(AssessmentStatusEnum.InProgress); _questionController.Index(model, true, A <Guid> ._, A <Guid> ._); A.CallTo(() => _workflowHandler.SetAssessmentNextStep(assessmentId, optionId, furtherInfo)).MustHaveHappened(Repeated.Exactly.Once); }