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); } }
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); } }
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 ); }
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(); } }