Merge pull request #1395 from cisagov/za/1366-add-filter-domain-invitation

Ticket #1366: Add filter for domain invitation
This commit is contained in:
zandercymatics 2023-11-27 14:53:53 -07:00 committed by GitHub
commit 99e158d981
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 0 deletions

View file

@ -344,6 +344,12 @@ class UserDomainRoleAdmin(ListHeaderAdmin):
class DomainInvitationAdmin(ListHeaderAdmin): class DomainInvitationAdmin(ListHeaderAdmin):
"""Custom domain invitation admin class.""" """Custom domain invitation admin class."""
class Meta:
model = models.DomainInvitation
fields = "__all__"
_meta = Meta()
# Columns # Columns
list_display = [ list_display = [
"email", "email",
@ -356,6 +362,10 @@ class DomainInvitationAdmin(ListHeaderAdmin):
"email", "email",
"domain__name", "domain__name",
] ]
# Filters
list_filter = ("status",)
search_help_text = "Search by email or domain." search_help_text = "Search by email or domain."
# Mark the FSM field 'status' as readonly # Mark the FSM field 'status' as readonly

View file

@ -8,6 +8,7 @@ from registrar.admin import (
DomainAdmin, DomainAdmin,
DomainApplicationAdmin, DomainApplicationAdmin,
DomainApplicationAdminForm, DomainApplicationAdminForm,
DomainInvitationAdmin,
ListHeaderAdmin, ListHeaderAdmin,
MyUserAdmin, MyUserAdmin,
AuditedAdmin, AuditedAdmin,
@ -847,6 +848,44 @@ class TestDomainApplicationAdmin(MockEppLib):
User.objects.all().delete() User.objects.all().delete()
class DomainInvitationAdminTest(TestCase):
"""Tests for the DomainInvitation page"""
def setUp(self):
"""Create a client object"""
self.client = Client(HTTP_HOST="localhost:8080")
self.factory = RequestFactory()
self.admin = ListHeaderAdmin(model=DomainInvitationAdmin, admin_site=AdminSite())
self.superuser = create_superuser()
def tearDown(self):
"""Delete all DomainInvitation objects"""
DomainInvitation.objects.all().delete()
def test_get_filters(self):
"""Ensures that our filters are displaying correctly"""
# Have to get creative to get past linter
p = "adminpass"
self.client.login(username="superuser", password=p)
response = self.client.get(
"/admin/registrar/domaininvitation/",
{},
follow=True,
)
# Assert that the filters are added
self.assertContains(response, "invited", count=4)
self.assertContains(response, "retrieved", count=4)
# Check for the HTML context specificially
invited_html = '<a href="?status__exact=invited">invited</a>'
retrieved_html = '<a href="?status__exact=retrieved">retrieved</a>'
self.assertContains(response, invited_html, count=1)
self.assertContains(response, retrieved_html, count=1)
class ListHeaderAdminTest(TestCase): class ListHeaderAdminTest(TestCase):
def setUp(self): def setUp(self):
self.site = AdminSite() self.site = AdminSite()

View file

@ -50,6 +50,7 @@ class ExportDataTest(TestCase):
) )
def tearDown(self): def tearDown(self):
# Dummy push - will remove
Domain.objects.all().delete() Domain.objects.all().delete()
DomainInformation.objects.all().delete() DomainInformation.objects.all().delete()
User.objects.all().delete() User.objects.all().delete()