public static (MyAccountDetailsData, CentreAnswersData?) MapToUpdateAccountData( MyAccountEditDetailsFormData formData, int?userAdminId, int?userDelegateId, int centreId ) { var accountDetailsData = new MyAccountDetailsData( userAdminId, userDelegateId, formData.Password !, formData.FirstName !, formData.LastName !, formData.Email !, formData.ProfileImage ); var centreAnswersData = userDelegateId == null ? null : new CentreAnswersData( centreId, formData.JobGroupId !.Value, formData.Answer1, formData.Answer2, formData.Answer3, formData.Answer4, formData.Answer5, formData.Answer6 ); return(accountDetailsData, centreAnswersData); }
public void EditDetailsPostSave_with_invalid_model_doesnt_call_services() { // Given var myAccountController = new MyAccountController( centreCustomPromptsService, userService, imageResizeService, jobGroupsDataService, centreCustomPromptHelper ).WithDefaultContext().WithMockUser(true); var formData = new MyAccountEditDetailsFormData(); var expectedModel = new MyAccountEditDetailsViewModel( formData, new List <(int id, string name)>(), new List <EditCustomFieldViewModel>(), DlsSubApplication.Default ); myAccountController.ModelState.AddModelError(nameof(MyAccountEditDetailsFormData.Email), "Required"); // When var result = myAccountController.EditDetails(formData, "save", DlsSubApplication.Default); // Then A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, A <int?> ._, A <int?> ._, A <int> ._)) .MustNotHaveHappened(); result.As <ViewResult>().Model.As <MyAccountEditDetailsViewModel>().Should().BeEquivalentTo(expectedModel); }
public IActionResult EditDetails( MyAccountEditDetailsFormData formData, string action, DlsSubApplication dlsSubApplication ) { return(action switch { "save" => EditDetailsPostSave(formData, dlsSubApplication), "previewImage" => EditDetailsPostPreviewImage(formData, dlsSubApplication), "removeImage" => EditDetailsPostRemoveImage(formData, dlsSubApplication), _ => new StatusCodeResult(500), });
public List <EditDelegateRegistrationPromptViewModel> GetEditDelegateRegistrationPromptViewModelsForCentre( MyAccountEditDetailsFormData formData, int centreId ) { return(GetEditDelegateRegistrationPromptViewModelsForCentre( centreId, formData.Answer1, formData.Answer2, formData.Answer3, formData.Answer4, formData.Answer5, formData.Answer6 )); }
public void EditDetailsPost_returns_error_with_unexpected_action() { // Given var myAccountController = new MyAccountController( centreCustomPromptsService, userService, imageResizeService, jobGroupsDataService, centreCustomPromptHelper ).WithDefaultContext().WithMockUser(true, adminId: null); const string action = "unexpectedString"; var model = new MyAccountEditDetailsFormData(); // When var result = myAccountController.EditDetails(model, action, DlsSubApplication.Default); // Then result.Should().BeStatusCodeResult().WithStatusCode(500); }
public void EditDetailsPostSave_without_previewing_profile_image_fails_validation() { // Given var myAccountController = new MyAccountController( centreCustomPromptsService, userService, imageResizeService, jobGroupsDataService, centreCustomPromptHelper ).WithDefaultContext().WithMockUser(true, adminId: null); var customPromptLists = new List <CustomPrompt> { CustomPromptsTestHelper.GetDefaultCustomPrompt(1, mandatory: true) }; A.CallTo (() => centreCustomPromptsService.GetCustomPromptsForCentreByCentreId(2)).Returns( CustomPromptsTestHelper.GetDefaultCentreCustomPrompts(customPromptLists, 2) ); var formData = new MyAccountEditDetailsFormData { ProfileImageFile = A.Fake <FormFile>(), }; var expectedPrompt = new EditCustomFieldViewModel(1, "Custom Prompt", true, new List <string>(), null); var expectedModel = new MyAccountEditDetailsViewModel( formData, new List <(int id, string name)>(), new List <EditCustomFieldViewModel> { expectedPrompt }, DlsSubApplication.Default ); // When var result = myAccountController.EditDetails(formData, "save", DlsSubApplication.Default); // Then A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, A <int?> ._, A <int?> ._, A <int> ._)) .MustNotHaveHappened(); result.As <ViewResult>().Model.As <MyAccountEditDetailsViewModel>().Should().BeEquivalentTo(expectedModel); myAccountController.ModelState[nameof(MyAccountEditDetailsFormData.ProfileImageFile)].ValidationState .Should().Be(ModelValidationState.Invalid); }
public void EditDetailsPostSave_with_invalid_password_fails_validation() { // Given var myAccountController = new MyAccountController( centreCustomPromptsService, userService, imageResizeService, jobGroupsDataService, centreCustomPromptHelper ).WithDefaultContext().WithMockUser(true, delegateId: null); A.CallTo(() => userService.IsPasswordValid(7, null, "password")).Returns(false); A.CallTo(() => userService.NewEmailAddressIsValid(Email, 7, null, 2)).Returns(true); A.CallTo(() => userService.UpdateUserAccountDetailsForAllVerifiedUsers(A <MyAccountDetailsData> ._, null)) .DoesNothing(); var formData = new MyAccountEditDetailsFormData { FirstName = "Test", LastName = "User", Email = Email, Password = "******", }; var expectedModel = new MyAccountEditDetailsViewModel( formData, new List <(int id, string name)>(), new List <EditCustomFieldViewModel>(), DlsSubApplication.Default ); // When var result = myAccountController.EditDetails(formData, "save", DlsSubApplication.Default); // Then A.CallTo(() => userService.NewEmailAddressIsValid(A <string> ._, A <int?> ._, A <int?> ._, A <int> ._)) .MustNotHaveHappened(); result.As <ViewResult>().Model.As <MyAccountEditDetailsViewModel>().Should().BeEquivalentTo(expectedModel); myAccountController.ModelState[nameof(MyAccountEditDetailsFormData.Password)].ValidationState.Should().Be (ModelValidationState.Invalid); }
public void EditDetailsPostSave_for_admin_user_with_missing_delegate_answers_doesnt_fail_validation() { // Given var myAccountController = new MyAccountController( centreCustomPromptsService, userService, imageResizeService, jobGroupsDataService, centreCustomPromptHelper ).WithDefaultContext().WithMockUser(true, delegateId: null); A.CallTo(() => userService.IsPasswordValid(7, null, "password")).Returns(true); A.CallTo(() => userService.NewEmailAddressIsValid(Email, 7, null, 2)).Returns(true); A.CallTo(() => userService.UpdateUserAccountDetailsForAllVerifiedUsers(A <MyAccountDetailsData> ._, null)).DoesNothing(); var model = new MyAccountEditDetailsFormData { FirstName = "Test", LastName = "User", Email = Email, Password = "******", }; var parameterName = typeof(MyAccountController).GetMethod("Index")?.GetParameters() .SingleOrDefault(p => p.ParameterType == typeof(DlsSubApplication))?.Name; // When var result = myAccountController.EditDetails(model, "save", DlsSubApplication.Default); // Then A.CallTo(() => userService.NewEmailAddressIsValid(Email, 7, null, 2)).MustHaveHappened(); A.CallTo(() => userService.UpdateUserAccountDetailsForAllVerifiedUsers(A <MyAccountDetailsData> ._, null)) .MustHaveHappened(); result.Should().BeRedirectToActionResult().WithActionName("Index").WithRouteValue( parameterName, DlsSubApplication.Default.UrlSegment ); }