mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-05 01:11:55 +02:00
Change tests and fix contact
This commit is contained in:
parent
59e7225dfd
commit
0ba0ce7c7c
2 changed files with 62 additions and 21 deletions
|
@ -64,7 +64,7 @@ class Contact(TimeStampedModel):
|
|||
super().save(*args, **kwargs)
|
||||
|
||||
# Update the related User object's first_name and last_name
|
||||
if self.user and not self.user.first_name or not self.user.last_name:
|
||||
if self.user and (not self.user.first_name or not self.user.last_name):
|
||||
self.user.first_name = self.first_name
|
||||
self.user.last_name = self.last_name
|
||||
self.user.save()
|
||||
|
|
|
@ -672,9 +672,14 @@ class TestUser(TestCase):
|
|||
|
||||
class TestContact(TestCase):
|
||||
def setUp(self):
|
||||
self.email_for_invalid = "intern@igorville.gov"
|
||||
self.invalid_user, _ = User.objects.get_or_create(
|
||||
username=self.email_for_invalid, email=self.email_for_invalid, first_name="", last_name="")
|
||||
self.invalid_contact, _ = Contact.objects.get_or_create(user=self.invalid_user)
|
||||
|
||||
self.email = "mayor@igorville.gov"
|
||||
self.user, _ = User.objects.get_or_create(email=self.email, first_name="Jeff", last_name="Lebowski")
|
||||
self.contact, _ = Contact.objects.get_or_create(user=self.user)
|
||||
self.existing_user, _ = User.objects.get_or_create(email=self.email, first_name="Jeff", last_name="Lebowski")
|
||||
self.existing_contact, _ = Contact.objects.get_or_create(user=self.existing_user)
|
||||
|
||||
def tearDown(self):
|
||||
super().tearDown()
|
||||
|
@ -683,33 +688,69 @@ class TestContact(TestCase):
|
|||
|
||||
def test_saving_contact_updates_user_first_last_names(self):
|
||||
"""When a contact is updated, we propagate the changes to the linked user if it exists."""
|
||||
# User and Contact are created and linked as expected
|
||||
self.assertEqual(self.contact.first_name, "Jeff")
|
||||
self.assertEqual(self.contact.last_name, "Lebowski")
|
||||
self.assertEqual(self.user.first_name, "Jeff")
|
||||
self.assertEqual(self.user.last_name, "Lebowski")
|
||||
|
||||
self.contact.first_name = "Joey"
|
||||
self.contact.last_name = "Baloney"
|
||||
self.contact.save()
|
||||
# User and Contact are created and linked as expected
|
||||
self.assertEqual(self.invalid_contact.first_name, "")
|
||||
self.assertEqual(self.invalid_contact.last_name, "")
|
||||
self.assertEqual(self.invalid_user.first_name, "")
|
||||
self.assertEqual(self.invalid_user.last_name, "")
|
||||
|
||||
# Manually update the contact - mimicking production
|
||||
self.invalid_contact.first_name = "Joey"
|
||||
self.invalid_contact.last_name = "Baloney"
|
||||
self.invalid_contact.save()
|
||||
|
||||
# Refresh the user object to reflect the changes made in the database
|
||||
self.user.refresh_from_db()
|
||||
self.invalid_user.refresh_from_db()
|
||||
|
||||
# Updating the contact's first and last names propagate to the user
|
||||
self.assertEqual(self.contact.first_name, "Joey")
|
||||
self.assertEqual(self.contact.last_name, "Baloney")
|
||||
self.assertEqual(self.user.first_name, "Joey")
|
||||
self.assertEqual(self.user.last_name, "Baloney")
|
||||
self.assertEqual(self.invalid_contact.first_name, "Joey")
|
||||
self.assertEqual(self.invalid_contact.last_name, "Baloney")
|
||||
self.assertEqual(self.invalid_user.first_name, "Joey")
|
||||
self.assertEqual(self.invalid_user.last_name, "Baloney")
|
||||
|
||||
def test_saving_contact_does_not_update_user_first_last_names(self):
|
||||
"""When a contact is updated, we avoid propagating the changes to the linked user if it already has a value"""
|
||||
|
||||
# User and Contact are created and linked as expected
|
||||
self.assertEqual(self.existing_contact.first_name, "Jeff")
|
||||
self.assertEqual(self.existing_contact.last_name, "Lebowski")
|
||||
self.assertEqual(self.existing_user.first_name, "Jeff")
|
||||
self.assertEqual(self.existing_user.last_name, "Lebowski")
|
||||
|
||||
self.existing_contact.first_name = "Joey"
|
||||
self.existing_contact.last_name = "Baloney"
|
||||
self.existing_contact.save()
|
||||
|
||||
# Refresh the user object to reflect the changes made in the database
|
||||
self.existing_user.refresh_from_db()
|
||||
|
||||
# Updating the contact's first and last names propagate to the user
|
||||
self.assertEqual(self.existing_contact.first_name, "Joey")
|
||||
self.assertEqual(self.existing_contact.last_name, "Baloney")
|
||||
self.assertEqual(self.existing_user.first_name, "Jeff")
|
||||
self.assertEqual(self.existing_user.last_name, "Lebowski")
|
||||
|
||||
def test_saving_contact_does_not_update_user_email(self):
|
||||
"""When a contact's email is updated, the change is not propagated to the lined user."""
|
||||
self.contact.email = "joey.baloney@diaperville.com"
|
||||
self.contact.save()
|
||||
self.existing_contact.email = "joey.baloney@diaperville.com"
|
||||
self.existing_contact.save()
|
||||
|
||||
# Refresh the user object to reflect the changes made in the database
|
||||
self.user.refresh_from_db()
|
||||
self.existing_user.refresh_from_db()
|
||||
|
||||
# Updating the contact's email does not propagate
|
||||
self.assertEqual(self.contact.email, "joey.baloney@diaperville.com")
|
||||
self.assertEqual(self.user.email, "mayor@igorville.gov")
|
||||
self.assertEqual(self.existing_contact.email, "joey.baloney@diaperville.com")
|
||||
self.assertEqual(self.existing_user.email, "mayor@igorville.gov")
|
||||
|
||||
def test_saving_contact_does_not_update_user_email_when_none(self):
|
||||
"""When a contact's email is updated, the change is not propagated to the lined user."""
|
||||
self.invalid_contact.email = "joey.baloney@diaperville.com"
|
||||
self.invalid_contact.save()
|
||||
|
||||
# Refresh the user object to reflect the changes made in the database
|
||||
self.invalid_user.refresh_from_db()
|
||||
|
||||
# Updating the contact's email does not propagate
|
||||
self.assertEqual(self.invalid_contact.email, "joey.baloney@diaperville.com")
|
||||
self.assertEqual(self.invalid_user.email, "mayor@igorville.gov")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue