コード例 #1
0
        public IActionResult GenerateGroups()
        {
            var registrationFieldOptions = GetRegistrationFieldOptionsSelectList();

            var model = new GenerateGroupsViewModel(registrationFieldOptions);

            return(View(model));
        }
コード例 #2
0
        public void GenerateGroups_POST_should_not_call_service_if_selected_field_is_a_free_text_field()
        {
            // Given
            var customPrompt1 = new CentreRegistrationPrompt(1, 2, "Role", "Test", false);
            var customPrompts = new List <CentreRegistrationPrompt> {
                customPrompt1
            };

            var registrationField = RegistrationField.CentreRegistrationField3;

            var model = new GenerateGroupsViewModel(
                new List <SelectListItem>(),
                registrationField.Id,
                false,
                true,
                false,
                true,
                false
                );

            A.CallTo(
                () => centreRegistrationPromptsService.GetCentreRegistrationPromptsThatHaveOptionsByCentreId(
                    A <int> ._
                    )
                )
            .Returns(customPrompts);

            A.CallTo(() => groupsService.GenerateGroupsFromRegistrationField(A <GroupGenerationDetails> ._))
            .DoesNothing();

            // When
            var result = delegateGroupsController.GenerateGroups(model);

            // Then
            using (new AssertionScope())
            {
                A.CallTo(() => groupsService.GenerateGroupsFromRegistrationField(A <GroupGenerationDetails> ._))
                .MustNotHaveHappened();
                result.Should().BeStatusCodeResult();
            }
        }
コード例 #3
0
        public void GenerateGroups_POST_should_not_call_service_if_model_state_is_invalid()
        {
            // Given
            var model = new GenerateGroupsViewModel();

            delegateGroupsController.ModelState.AddModelError("RegistrationFieldOptionId", "test error");

            A.CallTo(() => groupsService.GenerateGroupsFromRegistrationField(A <GroupGenerationDetails> ._))
            .DoesNothing();

            // When
            var result = delegateGroupsController.GenerateGroups(model);

            // Then
            using (new AssertionScope())
            {
                A.CallTo(() => groupsService.GenerateGroupsFromRegistrationField(A <GroupGenerationDetails> ._))
                .MustNotHaveHappened();
                result.Should().BeViewResult().ModelAs <GenerateGroupsViewModel>();
                delegateGroupsController.ModelState.IsValid.Should().BeFalse();
            }
        }
コード例 #4
0
        public IActionResult GenerateGroups(GenerateGroupsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.RegistrationFieldOptions = GetRegistrationFieldOptionsSelectList(model.RegistrationFieldOptionId);
                return(View(model));
            }

            var adminId           = User.GetAdminIdKnownNotNull() !;
            var centreId          = User.GetCentreId();
            var registrationField = (RegistrationField)model.RegistrationFieldOptionId;

            var fieldIsValid = centreRegistrationPromptsService
                               .GetCentreRegistrationPromptsThatHaveOptionsByCentreId(centreId).Select(cp => cp.RegistrationField.Id)
                               .Contains(registrationField !.Id) || registrationField.Equals(RegistrationField.JobGroup);

            if (!fieldIsValid)
            {
                return(StatusCode(500));
            }

            var groupDetails = new GroupGenerationDetails(
                adminId,
                centreId,
                registrationField,
                model.PrefixGroupName,
                model.PopulateExisting,
                model.AddNewRegistrants,
                model.SyncFieldChanges,
                model.SkipDuplicateNames
                );

            groupsService.GenerateGroupsFromRegistrationField(groupDetails);

            return(RedirectToAction("Index"));
        }
コード例 #5
0
        public void GenerateGroups_POST_should_call_service_and_redirect_to_index()
        {
            // Given
            const string groupNamePrefix = "Role";

            var registrationField          = RegistrationField.CentreRegistrationField1;
            var customPromptSelectListItem = new SelectListItem(groupNamePrefix, registrationField.Id.ToString());
            var jobGroup = new SelectListItem("Job group", "2");
            var registrationFieldOptions = new List <SelectListItem> {
                customPromptSelectListItem, jobGroup
            };

            var customPrompt1 = new CentreRegistrationPrompt(1, 1, groupNamePrefix, "Test", false);
            var customPrompts = new List <CentreRegistrationPrompt> {
                customPrompt1
            };

            var model = new GenerateGroupsViewModel(
                registrationFieldOptions,
                registrationField.Id,
                false,
                true,
                false,
                true,
                false
                );

            A.CallTo(
                () => centreRegistrationPromptsService.GetCentreRegistrationPromptsThatHaveOptionsByCentreId(
                    A <int> ._
                    )
                )
            .Returns(customPrompts);

            A.CallTo(() => groupsService.GenerateGroupsFromRegistrationField(A <GroupGenerationDetails> ._))
            .DoesNothing();

            // When
            var result = delegateGroupsController.GenerateGroups(model);

            // Then
            using (new AssertionScope())
            {
                A.CallTo(
                    () => groupsService.GenerateGroupsFromRegistrationField(
                        A <GroupGenerationDetails> .That.Matches(
                            gd =>
                            gd.AdminId == 7 &&
                            gd.CentreId == 2 &&
                            gd.RegistrationField.Equals(registrationField) &&
                            gd.PrefixGroupName == model.PrefixGroupName &&
                            gd.PopulateExisting == model.PopulateExisting &&
                            gd.SyncFieldChanges == model.SyncFieldChanges &&
                            gd.AddNewRegistrants == model.AddNewRegistrants &&
                            gd.PopulateExisting == model.PopulateExisting
                            )
                        )
                    )
                .MustHaveHappenedOnceExactly();
                result.Should().BeRedirectToActionResult().WithActionName("Index");
            }
        }