diff --git a/src/registrar/tests/common.py b/src/registrar/tests/common.py index c4a2772b0..fbd359b75 100644 --- a/src/registrar/tests/common.py +++ b/src/registrar/tests/common.py @@ -427,11 +427,18 @@ def create_superuser(): def create_user(): User = get_user_model() p = "userpass" - return User.objects.create_user( + staffuser = User.objects.create_user( username="staffuser", email="user@example.com", password=p, ) + staffuser.is_staff = True + staffuser.save() + + +def create_ready_domain(): + domain, _ = Domain.objects.get_or_create(name="city.gov", state=Domain.State.READY) + return domain def completed_application( diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py index fc5478dd9..ca5a7b93c 100644 --- a/src/registrar/tests/test_admin.py +++ b/src/registrar/tests/test_admin.py @@ -2,12 +2,14 @@ from django.test import TestCase, RequestFactory, Client from django.contrib.admin.sites import AdminSite from registrar.admin import ( + DomainAdmin, DomainApplicationAdmin, ListHeaderAdmin, MyUserAdmin, AuditedAdmin, ) from registrar.models import ( + Domain, DomainApplication, DomainInformation, User, @@ -18,6 +20,7 @@ from .common import ( mock_user, create_superuser, create_user, + create_ready_domain, multiple_unalphabetical_domain_objects, ) @@ -32,6 +35,52 @@ import logging logger = logging.getLogger(__name__) +class TestDomainAdmin(TestCase): + def setUp(self): + self.site = AdminSite() + self.factory = RequestFactory() + self.admin = DomainAdmin(model=Domain, admin_site=self.site) + self.client = Client(HTTP_HOST="localhost:8080") + self.staffuser = create_user() + + def test_place_and_remove_hold(self): + domain = create_ready_domain() + + # get admin page and assert Place Hold button + p = "userpass" + self.client.login(username="staffuser", password=p) + response = self.client.get( + "/admin/registrar/domain/{}/change/".format(domain.pk), + follow=True, + ) + self.assertEqual(response.status_code, 200) + self.assertContains(response, domain.name) + self.assertContains(response, "Place hold") + self.assertNotContains(response, "Remove hold") + + # submit place_client_hold and assert Remove Hold button + response = self.client.post( + "/admin/registrar/domain/{}/change/".format(domain.pk), + {"_place_client_hold": "Place hold", "name": domain.name}, + follow=True, + ) + self.assertEqual(response.status_code, 200) + self.assertContains(response, domain.name) + self.assertContains(response, "Remove hold") + self.assertNotContains(response, "Place hold") + + # submit remove client hold and assert Place hold button + response = self.client.post( + "/admin/registrar/domain/{}/change/".format(domain.pk), + {"_remove_client_hold": "Remove hold", "name": domain.name}, + follow=True, + ) + self.assertEqual(response.status_code, 200) + self.assertContains(response, domain.name) + self.assertContains(response, "Place hold") + self.assertNotContains(response, "Remove hold") + + class TestDomainApplicationAdmin(TestCase): def setUp(self): self.site = AdminSite()