public EditRegistrationPromptViewModel(CentreRegistrationPrompt centreRegistrationPrompt)
 {
     PromptNumber  = centreRegistrationPrompt.RegistrationField.Id;
     Prompt        = centreRegistrationPrompt.PromptText;
     Mandatory     = centreRegistrationPrompt.Mandatory;
     OptionsString = NewlineSeparatedStringListHelper.JoinNewlineSeparatedList(centreRegistrationPrompt.Options);
     IncludeAnswersTableCaption = true;
 }
        public void CentreRegistrationPrompt_constructor_populates_options_with_single_entry()
        {
            // When
            var result = new CentreRegistrationPrompt(1, 1, "Test", "Option", false);

            // Then
            using (new AssertionScope())
            {
                result.Options.Should().NotBeNull();
                result.Options.Count.Should().Be(1);
            }
        }
        public void CentreRegistrationPrompt_constructor_populates_options_with_extra_newline_separated_entries()
        {
            // Given
            var options = "Option1\r\nOption2\r\n\r\nOption3\r\n\r\n\r\n\r\nOption4";

            // When
            var result = new CentreRegistrationPrompt(1, 1, "Test", options, false);

            // Then
            using (new AssertionScope())
            {
                result.Options.Should().NotBeNull();
                result.Options.Count.Should().Be(4);
            }
        }
Ejemplo n.º 4
0
        public void GenerateGroups_GET_should_populate_registration_field_options_correctly()
        {
            // Given
            const string customPromptName1 = "Role";
            const string customPromptName2 = "Team";
            const int    centreId          = 2;

            var customPromptSelectListItem1 = new SelectListItem(customPromptName1, "1");
            var customPromptSelectListItem2 = new SelectListItem(customPromptName2, "2");
            var jobGroupSelectListItem      = new SelectListItem("Job group", "7");
            var registrationFieldOptions    = new List <SelectListItem>
            {
                customPromptSelectListItem1, customPromptSelectListItem2, jobGroupSelectListItem
            };

            var customPrompt1 = new CentreRegistrationPrompt(1, 1, customPromptName1, "Test", false);
            var customPrompt2 = new CentreRegistrationPrompt(2, 2, customPromptName2, "Test", false);
            var customPrompts = new List <CentreRegistrationPrompt> {
                customPrompt1, customPrompt2
            };

            A.CallTo(
                () => centreRegistrationPromptsService.GetCentreRegistrationPromptsThatHaveOptionsByCentreId(
                    centreId
                    )
                )
            .Returns(customPrompts);

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

            // Then
            using (new AssertionScope())
            {
                A.CallTo(
                    () => centreRegistrationPromptsService.GetCentreRegistrationPromptsThatHaveOptionsByCentreId(
                        A <int> ._
                        )
                    )
                .MustHaveHappenedOnceExactly();
                result.Should().BeViewResult().ModelAs <GenerateGroupsViewModel>().RegistrationFieldOptions.Should()
                .BeEquivalentTo(registrationFieldOptions);
            }
        }
Ejemplo n.º 5
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();
            }
        }
        GenerateGroupsFromRegistrationField_calls_data_service_methods_with_correct_values_for_custom_prompt()
        {
            // Given
            const string groupName       = "Manager";
            const string groupNamePrefix = "Role";

            const int linkedToField     = 1;
            var       registrationField = RegistrationField.CentreRegistrationField1;

            var timeNow = DateTime.UtcNow;
            var groupGenerationDetails = new GroupGenerationDetails(
                1,
                101,
                registrationField,
                false,
                true,
                false,
                true,
                true
                );

            var centreRegistrationPrompt  = new CentreRegistrationPrompt(1, 1, groupNamePrefix, groupName, false);
            var centreRegistrationPrompts = new List <CentreRegistrationPrompt> {
                centreRegistrationPrompt
            };

            SetUpGenerateGroupFakes(timeNow, centreRegistrationPrompts);

            // When
            groupsService.GenerateGroupsFromRegistrationField(groupGenerationDetails);

            // Then
            AssertCorrectMethodsAreCalledForGenerateGroups(
                groupGenerationDetails,
                timeNow,
                linkedToField,
                groupName,
                groupName
                );
        }
        GenerateGroupsFromRegistrationField_correctly_prefixes_group_name_with_custom_prompt_text_when_intended()
        {
            // Given
            const string groupName         = "Manager";
            const string groupNamePrefix   = "Role";
            var          registrationField = RegistrationField.CentreRegistrationField1;

            var timeNow = DateTime.UtcNow;
            var groupGenerationDetails = new GroupGenerationDetails(
                1,
                101,
                registrationField,
                true,
                true,
                false,
                true,
                true
                );

            var centreRegistrationPrompt  = new CentreRegistrationPrompt(1, 1, groupNamePrefix, groupName, false);
            var centreRegistrationPrompts = new List <CentreRegistrationPrompt> {
                centreRegistrationPrompt
            };

            SetUpGenerateGroupFakes(timeNow, centreRegistrationPrompts);

            // When
            groupsService.GenerateGroupsFromRegistrationField(groupGenerationDetails);

            // Then
            AssertCorrectMethodsAreCalledForGenerateGroups(
                groupGenerationDetails,
                timeNow,
                registrationField.LinkedToFieldId,
                $"{groupNamePrefix} - {groupName}",
                groupName
                );
        }
Ejemplo n.º 8
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");
            }
        }
        GenerateGroupsFromRegistrationField_skips_groups_with_duplicate_names()
        {
            // Given
            const string duplicateGroupName    = "Manager";
            const string nonDuplicateGroupName = "Receptionist";
            const string groupNamePrefix       = "Role";

            var timeNow = DateTime.UtcNow;
            var groupGenerationDetails = new GroupGenerationDetails(
                1,
                101,
                RegistrationField.CentreRegistrationField1,
                false,
                true,
                false,
                true,
                true
                );

            GivenCurrentTimeIs(timeNow);

            var centreRegistrationPrompt = new CentreRegistrationPrompt(
                1,
                1,
                groupNamePrefix,
                $"{duplicateGroupName}\r\n{nonDuplicateGroupName}",
                false
                );
            var centreRegistrationPrompts = new List <CentreRegistrationPrompt> {
                centreRegistrationPrompt
            };
            var groupAtCentre = new Group {
                GroupLabel = "Manager"
            };

            SetUpGenerateGroupFakes(timeNow, centreRegistrationPrompts, new List <Group> {
                groupAtCentre
            });

            // When
            groupsService.GenerateGroupsFromRegistrationField(groupGenerationDetails);

            // Then
            using (new AssertionScope())
            {
                A.CallTo(
                    () => groupsDataService.AddDelegateGroup(
                        A <GroupDetails> .That.Matches(
                            gd =>
                            gd.GroupLabel == duplicateGroupName
                            )
                        )
                    ).MustNotHaveHappened();
                A.CallTo(
                    () => groupsDataService.AddDelegateGroup(
                        A <GroupDetails> .That.Matches(
                            gd =>
                            gd.GroupLabel == nonDuplicateGroupName
                            )
                        )
                    ).MustHaveHappenedOnceExactly();
                A.CallTo(
                    () => groupsDataService.AddDelegatesWithMatchingAnswersToGroup(
                        A <int> ._,
                        A <DateTime> ._,
                        A <int> ._,
                        A <int> ._,
                        duplicateGroupName,
                        null
                        )
                    )
                .MustNotHaveHappened();
                A.CallTo(
                    () => groupsDataService.AddDelegatesWithMatchingAnswersToGroup(
                        A <int> ._,
                        A <DateTime> ._,
                        A <int> ._,
                        A <int> ._,
                        nonDuplicateGroupName,
                        null
                        )
                    )
                .MustHaveHappenedOnceExactly();
            }
        }