mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-03 00:12:16 +02:00
Sort on domain_application
This commit is contained in:
parent
2db74e6b00
commit
3beb23262b
3 changed files with 84 additions and 63 deletions
|
@ -418,6 +418,7 @@ class AuditedAdminTest(TestCase):
|
|||
DomainApplication.submitter.field,
|
||||
DomainApplication.investigator.field,
|
||||
DomainApplication.creator.field,
|
||||
DomainApplication.requested_domain.field,
|
||||
]
|
||||
|
||||
# Creates multiple domain applications - review status does not matter
|
||||
|
@ -430,62 +431,13 @@ class AuditedAdminTest(TestCase):
|
|||
|
||||
model_admin = AuditedAdmin(DomainApplication, self.site)
|
||||
|
||||
# Typically we wouldn't want two nested for fields,
|
||||
# but both fields are of a fixed length.
|
||||
# For test case purposes, this should be performant.
|
||||
for field in tested_fields:
|
||||
# We want both of these to be lists, as it is richer test wise.
|
||||
desired_order = self.order_by_desired_field_helper(
|
||||
model_admin, request, field.name, "first_name", "last_name"
|
||||
)
|
||||
current_sort_order: Contact = list(
|
||||
model_admin.formfield_for_foreignkey(field, request).queryset
|
||||
)
|
||||
|
||||
# Conforms to the same object structure as desired_order
|
||||
current_sort_order_coerced_type = []
|
||||
|
||||
# This is necessary as .queryset and get_queryset
|
||||
# return lists of different types/structures.
|
||||
# We need to parse this data and coerce them into the same type.
|
||||
for contact in current_sort_order:
|
||||
first = contact.first_name
|
||||
last = contact.last_name
|
||||
|
||||
name_tuple = self.coerced_fk_field_helper(first, last, field.name, ":")
|
||||
if name_tuple:
|
||||
current_sort_order_coerced_type.append((first, last))
|
||||
|
||||
self.assertEqual(
|
||||
desired_order,
|
||||
current_sort_order_coerced_type,
|
||||
"{} is not ordered alphabetically".format(field.name),
|
||||
)
|
||||
|
||||
def test_alphabetically_sorted_fk_fields_domain_information(self):
|
||||
tested_fields = [
|
||||
DomainInformation.authorizing_official.field,
|
||||
DomainInformation.submitter.field,
|
||||
DomainInformation.domain.field,
|
||||
DomainInformation.creator.field,
|
||||
]
|
||||
|
||||
# Creates multiple domain applications - review status does not matter
|
||||
applications = multiple_unalphabetical_domain_objects("information")
|
||||
|
||||
# Create a mock request
|
||||
request = self.factory.post(
|
||||
"/admin/registrar/domaininformation/{}/change/".format(applications[0].pk)
|
||||
)
|
||||
|
||||
model_admin = AuditedAdmin(DomainInformation, self.site)
|
||||
|
||||
sorted_fields = []
|
||||
# Typically we wouldn't want two nested for fields,
|
||||
# but both fields are of a fixed length.
|
||||
# For test case purposes, this should be performant.
|
||||
for field in tested_fields:
|
||||
isNamefield: bool = field == DomainInformation.domain.field
|
||||
isNamefield: bool = field == DomainApplication.requested_domain.field
|
||||
if isNamefield:
|
||||
sorted_fields = ["name"]
|
||||
else:
|
||||
|
@ -523,6 +475,73 @@ class AuditedAdminTest(TestCase):
|
|||
"{} is not ordered alphabetically".format(field.name),
|
||||
)
|
||||
|
||||
def test_alphabetically_sorted_fk_fields_domain_information(self):
|
||||
tested_fields = [
|
||||
DomainInformation.authorizing_official.field,
|
||||
DomainInformation.submitter.field,
|
||||
DomainInformation.creator.field,
|
||||
(DomainInformation.domain.field, ['name']),
|
||||
(DomainInformation.domain_application.field, ['requested_domain__name']),
|
||||
]
|
||||
# Creates multiple domain applications - review status does not matter
|
||||
applications = multiple_unalphabetical_domain_objects("information")
|
||||
|
||||
# Create a mock request
|
||||
request = self.factory.post(
|
||||
"/admin/registrar/domaininformation/{}/change/".format(applications[0].pk)
|
||||
)
|
||||
|
||||
model_admin = AuditedAdmin(DomainInformation, self.site)
|
||||
|
||||
sorted_fields = []
|
||||
# Typically we wouldn't want two nested for fields,
|
||||
# but both fields are of a fixed length.
|
||||
# For test case purposes, this should be performant.
|
||||
for field in tested_fields:
|
||||
isOtherOrderfield: bool = isinstance(field, tuple)
|
||||
field_obj = None
|
||||
if isOtherOrderfield:
|
||||
sorted_fields = field[1]
|
||||
field_obj = field[0]
|
||||
else:
|
||||
sorted_fields = ["first_name", "last_name"]
|
||||
field_obj = field
|
||||
# We want both of these to be lists, as it is richer test wise.
|
||||
desired_order = self.order_by_desired_field_helper(
|
||||
model_admin, request, field_obj.name, *sorted_fields
|
||||
)
|
||||
current_sort_order = list(
|
||||
model_admin.formfield_for_foreignkey(field_obj, request).queryset
|
||||
)
|
||||
|
||||
# Conforms to the same object structure as desired_order
|
||||
current_sort_order_coerced_type = []
|
||||
|
||||
# This is necessary as .queryset and get_queryset
|
||||
# return lists of different types/structures.
|
||||
# We need to parse this data and coerce them into the same type.
|
||||
for obj in current_sort_order:
|
||||
if not isOtherOrderfield:
|
||||
first = obj.first_name
|
||||
last = obj.last_name
|
||||
elif field_obj == DomainInformation.domain.field:
|
||||
first = obj.name
|
||||
last = None
|
||||
elif field_obj.name == DomainInformation.domain_application.field:
|
||||
first = obj.requested_domain
|
||||
last = None
|
||||
|
||||
name_tuple = self.coerced_fk_field_helper(first, last, field_obj.name, ":")
|
||||
if name_tuple is not None:
|
||||
logger.debug(name_tuple)
|
||||
current_sort_order_coerced_type.append(name_tuple)
|
||||
|
||||
self.assertEqual(
|
||||
desired_order,
|
||||
current_sort_order_coerced_type,
|
||||
"{} is not ordered alphabetically".format(field_obj.name),
|
||||
)
|
||||
|
||||
def test_alphabetically_sorted_fk_fields_domain_invitation(self):
|
||||
tested_fields = [DomainInvitation.domain.field]
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue