public void Changed_answer_maps_to_linked_field_correctly( CentreAnswersData oldAnswers, CentreAnswersData newAnswers, string expectedLinkedFieldName, int expectedLinkedFieldNumber, string expectedOldValue, string expectedNewValue ) { // Given A.CallTo(() => centreCustomPromptsService.GetPromptNameForCentreAndPromptNumber(A <int> ._, A <int> ._)) .Returns(expectedLinkedFieldName); var expectedResult = new List <LinkedFieldChange> { new LinkedFieldChange( expectedLinkedFieldNumber, expectedLinkedFieldName, expectedOldValue, expectedNewValue ) }; // When var result = LinkedFieldHelper.GetLinkedFieldChanges( oldAnswers, newAnswers, jobGroupsDataService, centreCustomPromptsService ); // Then result.Should().BeEquivalentTo(expectedResult); }
public void UpdateUserAccountDetailsForAllVerifiedUsers_with_incorrect_password_doesnt_update() { // Given var adminUser = UserTestHelper.GetDefaultAdminUser(); var delegateUser = UserTestHelper.GetDefaultDelegateUser(); string signedInEmail = "*****@*****.**"; string password = "******"; var firstName = "TestFirstName"; var lastName = "TestLastName"; var email = "*****@*****.**"; var accountDetailsData = new MyAccountDetailsData(adminUser.Id, delegateUser.Id, password, firstName, lastName, email, null); var centreAnswersData = new CentreAnswersData(2, 1, null, null, null, null, null, null); A.CallTo(() => userDataService.GetAdminUserById(adminUser.Id)).Returns(adminUser); A.CallTo(() => userDataService.GetDelegateUserById(delegateUser.Id)).Returns(delegateUser); A.CallTo(() => userDataService.GetAdminUserByEmailAddress(signedInEmail)).Returns(null); A.CallTo(() => userDataService.GetDelegateUsersByEmailAddress(signedInEmail)) .Returns(new List <DelegateUser>()); A.CallTo(() => userVerificationService.VerifyUsers(password, A <AdminUser?> ._, A <List <DelegateUser> > ._)) .Returns(new UserAccountSet()); A.CallTo( () => groupsService.SynchroniseUserChangesWithGroups( A <DelegateUser> ._, A <MyAccountDetailsData> ._, A <CentreAnswersData> ._ ) ).DoesNothing(); // When userService.UpdateUserAccountDetailsForAllVerifiedUsers(accountDetailsData, centreAnswersData); // Then A.CallTo(() => userDataService.UpdateDelegateUsers(A <string> ._, A <string> ._, A <string> ._, null, A <int[]> ._)) .MustNotHaveHappened(); A.CallTo(() => userDataService.UpdateAdminUser(A <string> ._, A <string> ._, A <string> ._, null, A <int> ._)) .MustNotHaveHappened(); A.CallTo( () => userDataService.UpdateDelegateUserCentrePrompts( A <int> ._, A <int> ._, A <string?> ._, A <string?> ._, A <string?> ._, A <string?> ._, A <string?> ._, A <string?> ._ ) ) .MustNotHaveHappened(); A.CallTo( () => groupsService.SynchroniseUserChangesWithGroups( A <DelegateUser> ._, A <MyAccountDetailsData> ._, A <CentreAnswersData> ._ ) ).MustNotHaveHappened(); }
public void SynchroniseUserChangesWithGroups( DelegateUser delegateAccountWithOldDetails, AccountDetailsData newDelegateDetails, CentreAnswersData newCentreAnswers ) { var changedLinkedFields = LinkedFieldHelper.GetLinkedFieldChanges( delegateAccountWithOldDetails.GetCentreAnswersData(), newCentreAnswers, jobGroupsDataService, centreCustomPromptsService ); var allSynchronisedGroupsAtCentre = GetSynchronisedGroupsForCentre(delegateAccountWithOldDetails.CentreId).ToList(); foreach (var changedAnswer in changedLinkedFields) { var groupToRemoveDelegateFrom = allSynchronisedGroupsAtCentre.SingleOrDefault( g => g.LinkedToField == changedAnswer.LinkedFieldNumber && GroupLabelMatchesAnswer(g.GroupLabel, changedAnswer.OldValue, changedAnswer.LinkedFieldName) ); var groupToAddDelegateTo = allSynchronisedGroupsAtCentre.SingleOrDefault( g => g.LinkedToField == changedAnswer.LinkedFieldNumber && GroupLabelMatchesAnswer(g.GroupLabel, changedAnswer.NewValue, changedAnswer.LinkedFieldName) ); using var transaction = new TransactionScope(); if (groupToRemoveDelegateFrom != null) { RemoveDelegateFromGroup(delegateAccountWithOldDetails.Id, groupToRemoveDelegateFrom.GroupId); } if (groupToAddDelegateTo != null) { groupsDataService.AddDelegateToGroup( delegateAccountWithOldDetails.Id, groupToAddDelegateTo.GroupId, clockService.UtcNow, 1 ); EnrolDelegateOnGroupCourses( delegateAccountWithOldDetails, newDelegateDetails, groupToAddDelegateTo.GroupId ); } transaction.Complete(); } }
public void UpdateUserAccountDetailsViaDelegateAccount_updates_admin_user_if_found_by_email() { // Given const string email = "*****@*****.**"; var delegateUser = UserTestHelper.GetDefaultDelegateUser(emailAddress: email); var adminUser = UserTestHelper.GetDefaultAdminUser(emailAddress: email); A.CallTo(() => userDataService.GetDelegateUserById(delegateUser.Id)).Returns(delegateUser); A.CallTo(() => userDataService.GetDelegateUsersByEmailAddress(email)) .Returns(new List <DelegateUser> { delegateUser }); A.CallTo(() => userDataService.GetAdminUserByEmailAddress(email)).Returns(adminUser); var editDelegateDetailsData = new EditDelegateDetailsData( delegateUser.Id, delegateUser.FirstName !, delegateUser.LastName, delegateUser.EmailAddress !, delegateUser.AliasId ); var centreAnswersData = new CentreAnswersData( delegateUser.CentreId, delegateUser.JobGroupId, delegateUser.Answer1, delegateUser.Answer2, delegateUser.Answer3, delegateUser.Answer4, delegateUser.Answer5, delegateUser.Answer6 ); // When userService.UpdateUserAccountDetailsViaDelegateAccount(editDelegateDetailsData, centreAnswersData); // Then A.CallTo( () => userDataService.UpdateAdminUser( editDelegateDetailsData.FirstName, editDelegateDetailsData.Surname, editDelegateDetailsData.Email, adminUser.ProfileImage, adminUser.Id ) ).MustHaveHappened(); }
public void UpdateUserAccountDetailsViaDelegateAccount_updates_name_and_email_on_all_found_delegates() { // Given const string email = "*****@*****.**"; var delegateUser = UserTestHelper.GetDefaultDelegateUser(emailAddress: email); var secondDelegateUser = UserTestHelper.GetDefaultDelegateUser(id: 3, emailAddress: email); A.CallTo(() => userDataService.GetDelegateUserById(delegateUser.Id)).Returns(delegateUser); A.CallTo(() => userDataService.GetDelegateUsersByEmailAddress(email)) .Returns(new List <DelegateUser> { delegateUser, secondDelegateUser }); A.CallTo(() => userDataService.GetAdminUserByEmailAddress(email)).Returns(null); var editDelegateDetailsData = new EditDelegateDetailsData( delegateUser.Id, delegateUser.FirstName !, delegateUser.LastName, delegateUser.EmailAddress !, delegateUser.AliasId ); var centreAnswersData = new CentreAnswersData( delegateUser.CentreId, delegateUser.JobGroupId, delegateUser.Answer1, delegateUser.Answer2, delegateUser.Answer3, delegateUser.Answer4, delegateUser.Answer5, delegateUser.Answer6 ); // When userService.UpdateUserAccountDetailsViaDelegateAccount(editDelegateDetailsData, centreAnswersData); // Then A.CallTo( () => userDataService.UpdateDelegateAccountDetails( editDelegateDetailsData.FirstName, editDelegateDetailsData.Surname, editDelegateDetailsData.Email, A <int[]> .That.Matches(x => x.First() == 2 && x.Last() == 3) ) ).MustHaveHappened(); }
public static List <LinkedFieldChange> GetLinkedFieldChanges( CentreAnswersData oldAnswers, CentreAnswersData newAnswers, IJobGroupsDataService jobGroupsDataService, ICentreCustomPromptsService centreCustomPromptsService ) { var changedLinkedFieldsWithAnswers = new List <LinkedFieldChange>(); if (newAnswers.Answer1 != oldAnswers.Answer1) { var prompt1Name = centreCustomPromptsService.GetPromptNameForCentreAndPromptNumber(oldAnswers.CentreId, 1); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(1, prompt1Name, oldAnswers.Answer1, newAnswers.Answer1) ); } if (newAnswers.Answer2 != oldAnswers.Answer2) { var prompt2Name = centreCustomPromptsService.GetPromptNameForCentreAndPromptNumber(oldAnswers.CentreId, 2); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(2, prompt2Name, oldAnswers.Answer2, newAnswers.Answer2) ); } if (newAnswers.Answer3 != oldAnswers.Answer3) { var prompt3Name = centreCustomPromptsService.GetPromptNameForCentreAndPromptNumber(oldAnswers.CentreId, 3); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(3, prompt3Name, oldAnswers.Answer3, newAnswers.Answer3) ); } if (newAnswers.JobGroupId != oldAnswers.JobGroupId) { var oldJobGroup = jobGroupsDataService.GetJobGroupName(oldAnswers.JobGroupId); var newJobGroup = jobGroupsDataService.GetJobGroupName(newAnswers.JobGroupId); changedLinkedFieldsWithAnswers.Add(new LinkedFieldChange(4, "Job Group", oldJobGroup, newJobGroup)); } if (newAnswers.Answer4 != oldAnswers.Answer4) { var prompt4Name = centreCustomPromptsService.GetPromptNameForCentreAndPromptNumber(oldAnswers.CentreId, 4); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(5, prompt4Name, oldAnswers.Answer4, newAnswers.Answer4) ); } if (newAnswers.Answer5 != oldAnswers.Answer5) { var prompt5Name = centreCustomPromptsService.GetPromptNameForCentreAndPromptNumber(oldAnswers.CentreId, 5); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(6, prompt5Name, oldAnswers.Answer5, newAnswers.Answer5) ); } if (newAnswers.Answer6 != oldAnswers.Answer6) { var prompt6Name = centreCustomPromptsService.GetPromptNameForCentreAndPromptNumber(oldAnswers.CentreId, 6); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(7, prompt6Name, oldAnswers.Answer6, newAnswers.Answer6) ); } return(changedLinkedFieldsWithAnswers); }
public static List <LinkedFieldChange> GetLinkedFieldChanges( CentreAnswersData oldAnswers, CentreAnswersData newAnswers, IJobGroupsDataService jobGroupsDataService, ICentreRegistrationPromptsService centreRegistrationPromptsService ) { var changedLinkedFieldsWithAnswers = new List <LinkedFieldChange>(); if (newAnswers.Answer1 != oldAnswers.Answer1) { var prompt1Name = centreRegistrationPromptsService.GetCentreRegistrationPromptNameAndNumber(oldAnswers.CentreId, RegistrationField.CentreRegistrationField1.Id); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(RegistrationField.CentreRegistrationField1.LinkedToFieldId, prompt1Name, oldAnswers.Answer1, newAnswers.Answer1) ); } if (newAnswers.Answer2 != oldAnswers.Answer2) { var prompt2Name = centreRegistrationPromptsService.GetCentreRegistrationPromptNameAndNumber(oldAnswers.CentreId, RegistrationField.CentreRegistrationField2.Id); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(RegistrationField.CentreRegistrationField2.LinkedToFieldId, prompt2Name, oldAnswers.Answer2, newAnswers.Answer2) ); } if (newAnswers.Answer3 != oldAnswers.Answer3) { var prompt3Name = centreRegistrationPromptsService.GetCentreRegistrationPromptNameAndNumber(oldAnswers.CentreId, RegistrationField.CentreRegistrationField3.Id); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(RegistrationField.CentreRegistrationField3.LinkedToFieldId, prompt3Name, oldAnswers.Answer3, newAnswers.Answer3) ); } if (newAnswers.JobGroupId != oldAnswers.JobGroupId) { var oldJobGroup = jobGroupsDataService.GetJobGroupName(oldAnswers.JobGroupId); var newJobGroup = jobGroupsDataService.GetJobGroupName(newAnswers.JobGroupId); changedLinkedFieldsWithAnswers.Add(new LinkedFieldChange(RegistrationField.JobGroup.LinkedToFieldId, "Job group", oldJobGroup, newJobGroup)); } if (newAnswers.Answer4 != oldAnswers.Answer4) { var prompt4Name = centreRegistrationPromptsService.GetCentreRegistrationPromptNameAndNumber(oldAnswers.CentreId, RegistrationField.CentreRegistrationField4.Id); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(RegistrationField.CentreRegistrationField4.LinkedToFieldId, prompt4Name, oldAnswers.Answer4, newAnswers.Answer4) ); } if (newAnswers.Answer5 != oldAnswers.Answer5) { var prompt5Name = centreRegistrationPromptsService.GetCentreRegistrationPromptNameAndNumber(oldAnswers.CentreId, RegistrationField.CentreRegistrationField5.Id); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(RegistrationField.CentreRegistrationField5.LinkedToFieldId, prompt5Name, oldAnswers.Answer5, newAnswers.Answer5) ); } if (newAnswers.Answer6 != oldAnswers.Answer6) { var prompt6Name = centreRegistrationPromptsService.GetCentreRegistrationPromptNameAndNumber(oldAnswers.CentreId, RegistrationField.CentreRegistrationField6.Id); changedLinkedFieldsWithAnswers.Add( new LinkedFieldChange(RegistrationField.CentreRegistrationField6.LinkedToFieldId, prompt6Name, oldAnswers.Answer6, newAnswers.Answer6) ); } return(changedLinkedFieldsWithAnswers); }