mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-22 18:56:15 +02:00
Change ready_at to first_ready_at and make a unit test for it
This commit is contained in:
parent
1be00962ac
commit
92f17c437f
3 changed files with 40 additions and 8 deletions
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 4.2.7 on 2023-12-21 17:12
|
# Generated by Django 4.2.7 on 2023-12-21 19:28
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ class Migration(migrations.Migration):
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name="domain",
|
model_name="domain",
|
||||||
name="ready_at",
|
name="first_ready_at",
|
||||||
field=models.DateField(
|
field=models.DateField(
|
||||||
editable=False, help_text="The last time this domain moved into the READY state", null=True
|
editable=False, help_text="The last time this domain moved into the READY state", null=True
|
||||||
),
|
),
|
|
@ -967,7 +967,7 @@ class Domain(TimeStampedModel, DomainHelper):
|
||||||
help_text="Deleted at date",
|
help_text="Deleted at date",
|
||||||
)
|
)
|
||||||
|
|
||||||
ready_at = DateField(
|
first_ready_at = DateField(
|
||||||
null=True,
|
null=True,
|
||||||
editable=False,
|
editable=False,
|
||||||
help_text="The last time this domain moved into the READY state",
|
help_text="The last time this domain moved into the READY state",
|
||||||
|
@ -1336,7 +1336,11 @@ class Domain(TimeStampedModel, DomainHelper):
|
||||||
"""
|
"""
|
||||||
logger.info("Changing to ready state")
|
logger.info("Changing to ready state")
|
||||||
logger.info("able to transition to ready state")
|
logger.info("able to transition to ready state")
|
||||||
self.ready_at = timezone.now()
|
# if self.first_ready_at is not None, this means that his
|
||||||
|
# domain wasr READY, then not READY, then is READY again.
|
||||||
|
# We do not want to overwrite first_ready_at.
|
||||||
|
if self.first_ready_at is None:
|
||||||
|
self.first_ready_at = timezone.now()
|
||||||
|
|
||||||
@transition(
|
@transition(
|
||||||
field="state",
|
field="state",
|
||||||
|
|
|
@ -385,6 +385,34 @@ class TestDomainStatuses(MockEppLib):
|
||||||
"""Domain 'revert_client_hold' method causes the registry to change statuses"""
|
"""Domain 'revert_client_hold' method causes the registry to change statuses"""
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
def test_first_ready_at(self):
|
||||||
|
"""
|
||||||
|
first_ready_at is set when a domain is first transitioned to READY. It does not get overwritten
|
||||||
|
in case the domain gets out of and back into READY.
|
||||||
|
"""
|
||||||
|
domain, _ = Domain.objects.get_or_create(name="pig-knuckles.gov", state=Domain.State.DNS_NEEDED)
|
||||||
|
self.assertEqual(domain.first_ready_at, None)
|
||||||
|
|
||||||
|
domain.ready()
|
||||||
|
|
||||||
|
# check that status is READY
|
||||||
|
self.assertTrue(domain.is_active())
|
||||||
|
self.assertNotEqual(domain.first_ready_at, None)
|
||||||
|
|
||||||
|
# Capture the value of first_ready_at
|
||||||
|
first_ready_at = domain.first_ready_at
|
||||||
|
|
||||||
|
# change domain status
|
||||||
|
domain.dns_needed()
|
||||||
|
self.assertFalse(domain.is_active())
|
||||||
|
|
||||||
|
# change back to READY
|
||||||
|
domain.ready()
|
||||||
|
self.assertTrue(domain.is_active())
|
||||||
|
|
||||||
|
# assert that the value of first_ready_at has not changed
|
||||||
|
self.assertEqual(domain.first_ready_at, first_ready_at)
|
||||||
|
|
||||||
def tearDown(self) -> None:
|
def tearDown(self) -> None:
|
||||||
PublicContact.objects.all().delete()
|
PublicContact.objects.all().delete()
|
||||||
Domain.objects.all().delete()
|
Domain.objects.all().delete()
|
||||||
|
@ -1112,7 +1140,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
Then `commands.CreateHost` and `commands.UpdateDomain` is sent
|
Then `commands.CreateHost` and `commands.UpdateDomain` is sent
|
||||||
to the registry
|
to the registry
|
||||||
And `domain.is_active` returns False
|
And `domain.is_active` returns False
|
||||||
And domain.ready_at is null
|
And domain.first_ready_at is null
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# set 1 nameserver
|
# set 1 nameserver
|
||||||
|
@ -1139,7 +1167,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
# as you have less than 2 nameservers
|
# as you have less than 2 nameservers
|
||||||
self.assertFalse(self.domain.is_active())
|
self.assertFalse(self.domain.is_active())
|
||||||
|
|
||||||
self.assertEqual(self.domain.ready_at, None)
|
self.assertEqual(self.domain.first_ready_at, None)
|
||||||
|
|
||||||
def test_user_adds_two_nameservers(self):
|
def test_user_adds_two_nameservers(self):
|
||||||
"""
|
"""
|
||||||
|
@ -1149,7 +1177,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
Then `commands.CreateHost` and `commands.UpdateDomain` is sent
|
Then `commands.CreateHost` and `commands.UpdateDomain` is sent
|
||||||
to the registry
|
to the registry
|
||||||
And `domain.is_active` returns True
|
And `domain.is_active` returns True
|
||||||
And domain.ready_at is not null
|
And domain.first_ready_at is not null
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# set 2 nameservers
|
# set 2 nameservers
|
||||||
|
@ -1180,7 +1208,7 @@ class TestRegistrantNameservers(MockEppLib):
|
||||||
self.assertEqual(4, self.mockedSendFunction.call_count)
|
self.assertEqual(4, self.mockedSendFunction.call_count)
|
||||||
# check that status is READY
|
# check that status is READY
|
||||||
self.assertTrue(self.domain.is_active())
|
self.assertTrue(self.domain.is_active())
|
||||||
self.assertNotEqual(self.domain.ready_at, None)
|
self.assertNotEqual(self.domain.first_ready_at, None)
|
||||||
|
|
||||||
def test_user_adds_too_many_nameservers(self):
|
def test_user_adds_too_many_nameservers(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue