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"
                    );
            }
        }
Esempio n. 2
0
        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"
                    );
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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 }));
        }