public void Index_post_returns_view_with_model_error_with_duplicate_alias() { // Given const string alias = "alias"; var formData = new EditDelegateFormData { JobGroupId = 1, AliasId = alias, }; A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, null, DelegateId, A <int> ._)).Returns(true); A.CallTo(() => userService.NewAliasIsValid(alias, DelegateId, A <int> ._)).Returns(false); // When var result = controller.Index(formData, DelegateId); // Then using (new AssertionScope()) { result.As <ViewResult>().Model.Should().BeOfType <EditDelegateViewModel>(); AssertModelStateErrorIsExpected( result, "A user with this alias is already registered at this centre" ); } }
public void Index_post_calls_userService_and_redirects_with_no_validation_errors() { // Given var formData = new EditDelegateFormData { JobGroupId = 1, }; A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, null, DelegateId, A <int> ._)).Returns(true); A.CallTo(() => userService.NewAliasIsValid(A <string> ._, DelegateId, A <int> ._)).Returns(true); // When var result = controller.Index(formData, DelegateId); // Then using (new AssertionScope()) { A.CallTo( () => userService.UpdateUserAccountDetailsViaDelegateAccount( A <EditDelegateDetailsData> ._, A <CentreAnswersData> ._ ) ).MustHaveHappened(); result.Should().BeRedirectToActionResult().WithControllerName("ViewDelegate").WithActionName("Index"); } }
public void Index_post_returns_view_with_model_error_with_invalid_prn() { // Given var formData = new EditDelegateFormData { JobGroupId = 1, HasProfessionalRegistrationNumber = true, ProfessionalRegistrationNumber = "!&^£%&*^!%£", }; A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, null, DelegateId, A <int> ._)).Returns(true); A.CallTo(() => userService.NewAliasIsValid(A <string> ._, DelegateId, A <int> ._)).Returns(true); // When var result = controller.Index(formData, DelegateId); // Then using (new AssertionScope()) { result.As <ViewResult>().Model.Should().BeOfType <EditDelegateViewModel>(); AssertModelStateErrorIsExpected( result, "Invalid professional registration number format - Only alphanumeric characters (a-z, A-Z and 0-9) and hyphens (-) allowed" ); } }
public static (EditDelegateDetailsData, CentreAnswersData) MapToUpdateAccountData( EditDelegateFormData formData, int userDelegateId, int centreId ) { var accountDetailsData = new EditDelegateDetailsData( userDelegateId, formData.FirstName !, formData.LastName !, formData.Email !, formData.AliasId, formData.HasProfessionalRegistrationNumber == true ? formData.ProfessionalRegistrationNumber : null, formData.HasProfessionalRegistrationNumber.HasValue ); var centreAnswersData = new CentreAnswersData( centreId, formData.JobGroupId !.Value, formData.Answer1, formData.Answer2, formData.Answer3, formData.Answer4, formData.Answer5, formData.Answer6 ); return(accountDetailsData, centreAnswersData); }
public static (EditDelegateDetailsData, CentreAnswersData) MapToUpdateAccountData( EditDelegateFormData formData, int userDelegateId, int centreId ) { var accountDetailsData = new EditDelegateDetailsData( userDelegateId, formData.FirstName !, formData.LastName !, formData.Email !, formData.AliasId ); var centreAnswersData = new CentreAnswersData( centreId, formData.JobGroupId !.Value, formData.Answer1, formData.Answer2, formData.Answer3, formData.Answer4, formData.Answer5, formData.Answer6 ); return(accountDetailsData, centreAnswersData); }
private IActionResult ReturnToEditDetailsViewWithErrors( EditDelegateFormData formData, int delegateId, int centreId ) { var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical().ToList(); var customPrompts = promptsService.GetEditDelegateRegistrationPromptViewModelsForCentre(formData, centreId); var model = new EditDelegateViewModel(formData, jobGroups, customPrompts, delegateId); return(View(model)); }
public IActionResult Index(EditDelegateFormData formData, int delegateId) { var centreId = User.GetCentreId(); promptsService.ValidateCentreRegistrationPrompts(formData, centreId, ModelState); if (!userService.NewAliasIsValid(formData.AliasId, delegateId, centreId)) { ModelState.AddModelError( nameof(EditDelegateFormData.AliasId), "A user with this alias is already registered at this centre" ); } ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber( ModelState, formData.HasProfessionalRegistrationNumber, formData.ProfessionalRegistrationNumber ); if (!ModelState.IsValid) { return(ReturnToEditDetailsViewWithErrors(formData, delegateId, centreId)); } if (!userService.NewEmailAddressIsValid(formData.Email !, null, delegateId, centreId)) { ModelState.AddModelError( nameof(EditDetailsFormData.Email), "A user with this email is already registered at this centre" ); return(ReturnToEditDetailsViewWithErrors(formData, delegateId, centreId)); } var(accountDetailsData, centreAnswersData) = AccountDetailsDataHelper.MapToUpdateAccountData( formData, delegateId, User.GetCentreId() ); userService.UpdateUserAccountDetailsViaDelegateAccount(accountDetailsData, centreAnswersData); return(RedirectToAction("Index", "ViewDelegate", new { delegateId })); }