diff --git a/src/registrar/models/contact.py b/src/registrar/models/contact.py index a5a6ff16c..477048d05 100644 --- a/src/registrar/models/contact.py +++ b/src/registrar/models/contact.py @@ -119,11 +119,21 @@ class Contact(TimeStampedModel): self.user.last_name = self.last_name updated = True + # Update middle_name if necessary + if not self.user.middle_name: + self.user.middle_name = self.middle_name + updated = True + # Update phone if necessary if not self.user.phone: self.user.phone = self.phone updated = True + # Update title if necessary + if not self.user.title: + self.user.title = self.title + updated = True + # Save user if any updates were made if updated: self.user.save() diff --git a/src/registrar/signals.py b/src/registrar/signals.py index 4e7768ef4..bc0480b2a 100644 --- a/src/registrar/signals.py +++ b/src/registrar/signals.py @@ -24,9 +24,11 @@ def handle_profile(sender, instance, **kwargs): """ first_name = getattr(instance, "first_name", "") + middle_name = getattr(instance, "middle_name", "") last_name = getattr(instance, "last_name", "") email = getattr(instance, "email", "") phone = getattr(instance, "phone", "") + title = getattr(instance, "title", "") is_new_user = kwargs.get("created", False) @@ -39,9 +41,11 @@ def handle_profile(sender, instance, **kwargs): Contact.objects.create( user=instance, first_name=first_name, + middle_name=middle_name, last_name=last_name, email=email, phone=phone, + title=title, ) if len(contacts) >= 1 and is_new_user: # a matching contact diff --git a/src/registrar/tests/test_copy_names_from_contacts_to_users.py b/src/registrar/tests/test_copy_names_from_contacts_to_users.py index 032203f4e..7fcbede1e 100644 --- a/src/registrar/tests/test_copy_names_from_contacts_to_users.py +++ b/src/registrar/tests/test_copy_names_from_contacts_to_users.py @@ -23,15 +23,32 @@ class TestDataUpdates(TestCase): self.bs_user = User.objects.create() self.contact1 = Contact.objects.create( - user=self.user1, email="email1@igorville.gov", first_name="first1", last_name="last1" + user=self.user1, + email="email1@igorville.gov", + first_name="first1", + last_name="last1", + middle_name="middle1", + title="title1", ) self.contact2 = Contact.objects.create( - user=self.user2, email="email2@igorville.gov", first_name="first2", last_name="last2" + user=self.user2, + email="email2@igorville.gov", + first_name="first2", + last_name="last2", + middle_name="middle2", + title="title2", ) self.contact3 = Contact.objects.create( - user=self.user3, email="email3@igorville.gov", first_name="first3", last_name="last3" + user=self.user3, + email="email3@igorville.gov", + first_name="first3", + last_name="last3", + middle_name="middle3", + title="title3", + ) + self.contact4 = Contact.objects.create( + email="email4@igorville.gov", first_name="first4", last_name="last4", middle_name="middle4", title="title4" ) - self.contact4 = Contact.objects.create(email="email4@igorville.gov", first_name="first4", last_name="last4") self.command = Command() @@ -42,14 +59,15 @@ class TestDataUpdates(TestCase): Contact.objects.all().delete() def test_script_updates_linked_users(self): - """Test the script that copies contacts' first and last names into associated users that - are eligible (first or last are blank or undefined)""" + """Test the script that copies contact information to the user object""" # Set up the users' first and last names here so # they that they don't get overwritten by Contact's save() # User with no first or last names self.user1.first_name = "" self.user1.last_name = "" + self.user1.title = "dummytitle" + self.user1.middle_name = "dummymiddle" self.user1.save() # User with a first name but no last name @@ -87,12 +105,20 @@ class TestDataUpdates(TestCase): # The user that has no first and last names will get them from the contact self.assertEqual(self.user1.first_name, "first1") self.assertEqual(self.user1.last_name, "last1") - # The user that has a first but no last will be left alone - self.assertEqual(self.user2.first_name, "First name but no last name") - self.assertEqual(self.user2.last_name, "") - # The user that has a first and a last will be left alone - self.assertEqual(self.user3.first_name, "An existing first name") - self.assertEqual(self.user3.last_name, "An existing last name") + self.assertEqual(self.user1.middle_name, "middle1") + self.assertEqual(self.user1.title, "title1") + # The user that has a first but no last will be updated + self.assertEqual(self.user2.first_name, "first2") + self.assertEqual(self.user2.last_name, "last2") + self.assertEqual(self.user2.middle_name, "middle2") + self.assertEqual(self.user2.title, "title2") + # The user that has a first and a last will be updated + self.assertEqual(self.user3.first_name, "first3") + self.assertEqual(self.user3.last_name, "last3") + self.assertEqual(self.user3.middle_name, "middle3") + self.assertEqual(self.user3.title, "title3") # The unlinked user will be left alone self.assertEqual(self.user4.first_name, "") self.assertEqual(self.user4.last_name, "") + self.assertEqual(self.user4.middle_name, None) + self.assertEqual(self.user4.title, None)