public IActionResult EditDelegateCourseAdminField( EditDelegateCourseAdminFieldFormData formData, int promptNumber, int progressId, DelegateAccessRoute accessedVia ) { if (!ModelState.IsValid) { var delegateCourseProgress = progressService.GetDetailedCourseProgress(progressId); var model = new EditDelegateCourseAdminFieldViewModel( formData, delegateCourseProgress !, progressId, promptNumber, accessedVia ); return(View(model)); } progressService.UpdateCourseAdminFieldForDelegate(progressId, promptNumber, formData.Answer?.Trim()); return(RedirectToPreviousPage(formData.DelegateId, formData.CustomisationId, accessedVia, formData.ReturnPageQuery)); }
public void EditDelegateCourseAdminField_POST_calls_service_and_redirects_to_correct_action( DelegateAccessRoute accessedVia, string expectedController, string expectedAction ) { // Given const int promptNumber = 1; const string answer = "Test Answer"; var formData = new EditDelegateCourseAdminFieldFormData { Answer = answer, ReturnPageQuery = ReturnPageQueryHelper.GetDefaultReturnPageQuery(itemIdToReturnTo: CardId), }; A.CallTo(() => progressService.UpdateCourseAdminFieldForDelegate(A <int> ._, A <int> ._, A <string> ._)) .DoesNothing(); // When var result = delegateProgressController.EditDelegateCourseAdminField( formData, promptNumber, ProgressId, accessedVia ); // Then A.CallTo(() => progressService.UpdateCourseAdminFieldForDelegate(ProgressId, promptNumber, answer)) .MustHaveHappenedOnceExactly(); var expectedFragment = accessedVia.Equals(DelegateAccessRoute.CourseDelegates) ? CardId : null; result.Should().BeRedirectToActionResult().WithControllerName(expectedController) .WithActionName(expectedAction).WithFragment(expectedFragment); }
public void EditDelegateCourseAdminField_POST_does_not_call_service_with_invalid_model() { // Given const int promptNumber = 1; const string answer = "Test Answer"; var delegateCourseInfo = new DelegateCourseInfo { CourseAdminFields = new List <CourseAdminFieldWithAnswer> { new CourseAdminFieldWithAnswer(promptNumber, "Prompt text", "Answer", null) }, }; var delegateCourseDetails = new DetailedCourseProgress( new Progress(), new List <DetailedSectionProgress>(), delegateCourseInfo ); var formData = new EditDelegateCourseAdminFieldFormData { Answer = answer }; A.CallTo(() => progressService.GetDetailedCourseProgress(ProgressId)) .Returns(delegateCourseDetails); delegateProgressController.ModelState.AddModelError("Answer", "Test error message"); // When var result = delegateProgressController.EditDelegateCourseAdminField( formData, promptNumber, ProgressId, DelegateAccessRoute.CourseDelegates ); // Then A.CallTo(() => progressService.UpdateCourseAdminFieldForDelegate(A <int> ._, A <int> ._, A <string> ._)) .MustNotHaveHappened(); result.Should().BeViewResult().ModelAs <EditDelegateCourseAdminFieldViewModel>(); }