From 441a6027baf23d180792eab6d699b22cb978390b Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Wed, 22 Nov 2023 17:41:27 -0500 Subject: [PATCH 1/2] expiration date written to db on fetch_cache --- src/registrar/models/domain.py | 10 +++++++--- src/registrar/tests/common.py | 1 + src/registrar/tests/test_models_domain.py | 7 +++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/registrar/models/domain.py b/src/registrar/models/domain.py index 37e78ec6e..4cb2e72a3 100644 --- a/src/registrar/models/domain.py +++ b/src/registrar/models/domain.py @@ -214,9 +214,7 @@ class Domain(TimeStampedModel, DomainHelper): """Get or set the `ex_date` element from the registry. Additionally, update the expiration date in the registrar""" try: - self.expiration_date = self._get_property("ex_date") - self.save() - return self.expiration_date + return self._get_property("ex_date") except Exception as e: # exception raised during the save to registrar logger.error(f"error updating expiration date in registrar: {e}") @@ -1602,6 +1600,12 @@ class Domain(TimeStampedModel, DomainHelper): if old_cache_contacts is not None: cleaned["contacts"] = old_cache_contacts + # if expiration date from registry does not match what is in db, + # update the db + if "ex_date" in cleaned and cleaned["ex_date"] != self.expiration_date: + self.expiration_date = cleaned["ex_date"] + self.save() + self._cache = cleaned except RegistryError as e: diff --git a/src/registrar/tests/common.py b/src/registrar/tests/common.py index 9a062106f..46081e98f 100644 --- a/src/registrar/tests/common.py +++ b/src/registrar/tests/common.py @@ -617,6 +617,7 @@ class MockEppLib(TestCase): common.Status(state="serverTransferProhibited", description="", lang="en"), common.Status(state="inactive", description="", lang="en"), ], + ex_date=datetime.date(2023, 5, 25), ) mockDataInfoContact = mockDataInfoDomain.dummyInfoContactResultData( "123", "123@mail.gov", datetime.datetime(2023, 5, 25, 19, 45, 35), "lastPw" diff --git a/src/registrar/tests/test_models_domain.py b/src/registrar/tests/test_models_domain.py index c75b1b935..4a2023243 100644 --- a/src/registrar/tests/test_models_domain.py +++ b/src/registrar/tests/test_models_domain.py @@ -1987,6 +1987,13 @@ class TestExpirationDate(MockEppLib): with self.assertRaises(RegistryError): self.domain_w_error.renew_domain() + def test_expiration_date_updated_on_info_domain_call(self): + """assert that expiration date in db is updated on info domain call""" + # force fetch_cache to be called + self.domain.statuses + test_date = datetime.date(2023, 5, 25) + self.assertEquals(self.domain.expiration_date, test_date) + class TestAnalystClientHold(MockEppLib): """Rule: Analysts may suspend or restore a domain by using client hold""" From 128efb6a54b2a489268cab555720dd213a3716ef Mon Sep 17 00:00:00 2001 From: David Kennedy Date: Mon, 27 Nov 2023 20:03:38 -0500 Subject: [PATCH 2/2] updated comment --- src/registrar/models/domain.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/registrar/models/domain.py b/src/registrar/models/domain.py index 1e4ab0e17..94430fb36 100644 --- a/src/registrar/models/domain.py +++ b/src/registrar/models/domain.py @@ -212,7 +212,7 @@ class Domain(TimeStampedModel, DomainHelper): @Cache def registry_expiration_date(self) -> date: """Get or set the `ex_date` element from the registry. - Additionally, update the expiration date in the registrar""" + Additionally, _get_property updates the expiration date in the registrar""" try: return self._get_property("ex_date") except Exception as e: