mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-16 17:47:02 +02:00
Uncommited changes for tests
Test cases still a WIP - unsure as to why these two querysets are ordered differently. Otherwise the sorting logic is there
This commit is contained in:
parent
d7d4090054
commit
d99260f70a
3 changed files with 123 additions and 7 deletions
|
@ -14,8 +14,7 @@ logger = logging.getLogger(__name__)
|
||||||
foreignkey_orderby_dict: [SortingDictInterface] = [
|
foreignkey_orderby_dict: [SortingDictInterface] = [
|
||||||
#foreign_key - order_by
|
#foreign_key - order_by
|
||||||
SortingDictInterface(["submitter", "authorizing_official", "investigator", "creator", "user"], ['first_name', 'last_name']).sorting_dict,
|
SortingDictInterface(["submitter", "authorizing_official", "investigator", "creator", "user"], ['first_name', 'last_name']).sorting_dict,
|
||||||
SortingDictInterface(["domain", "requested_domain"], ["name"]).sorting_dict,
|
SortingDictInterface(["domain", "requested_domain"], ["name"]).sorting_dict
|
||||||
SortingDictInterface(["domain_application"], ['id']).sorting_dict
|
|
||||||
]
|
]
|
||||||
|
|
||||||
class AuditedAdmin(admin.ModelAdmin):
|
class AuditedAdmin(admin.ModelAdmin):
|
||||||
|
|
|
@ -2,6 +2,8 @@ import os
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
import random
|
||||||
|
from string import ascii_uppercase
|
||||||
from unittest.mock import Mock
|
from unittest.mock import Mock
|
||||||
from typing import List, Dict
|
from typing import List, Dict
|
||||||
|
|
||||||
|
@ -149,8 +151,8 @@ def completed_application(
|
||||||
phone="(555) 555 5556",
|
phone="(555) 555 5556",
|
||||||
)
|
)
|
||||||
other, _ = Contact.objects.get_or_create(
|
other, _ = Contact.objects.get_or_create(
|
||||||
first_name="Testy2",
|
first_name="Testy",
|
||||||
last_name="Tester2",
|
last_name="Tester",
|
||||||
title="Another Tester",
|
title="Another Tester",
|
||||||
email="testy2@town.com",
|
email="testy2@town.com",
|
||||||
phone="(555) 555 5557",
|
phone="(555) 555 5557",
|
||||||
|
@ -188,3 +190,75 @@ def completed_application(
|
||||||
application.alternative_domains.add(alt)
|
application.alternative_domains.add(alt)
|
||||||
|
|
||||||
return application
|
return application
|
||||||
|
|
||||||
|
def multiple_completed_applications(has_other_contacts=True,
|
||||||
|
has_current_website=True,
|
||||||
|
has_alternative_gov_domain=True,
|
||||||
|
has_type_of_work=True,
|
||||||
|
has_anything_else=True,
|
||||||
|
status=DomainApplication.STARTED,
|
||||||
|
user=False,):
|
||||||
|
applications = []
|
||||||
|
list_of_letters = list(ascii_uppercase)
|
||||||
|
random.shuffle(list_of_letters)
|
||||||
|
for x in list_of_letters:
|
||||||
|
if not user:
|
||||||
|
user = get_user_model().objects.create(username="username{}".format(x))
|
||||||
|
ao, _ = Contact.objects.get_or_create(
|
||||||
|
first_name="{} Testy".format(x),
|
||||||
|
last_name="{} Tester".format(x),
|
||||||
|
title="{} Chief Tester".format(x),
|
||||||
|
email="testy@town.com",
|
||||||
|
phone="(555) 555 5555",
|
||||||
|
)
|
||||||
|
domain, _ = DraftDomain.objects.get_or_create(name="city{}.gov".format(x))
|
||||||
|
alt, _ = Website.objects.get_or_create(website="cityalt{}.gov".format(x))
|
||||||
|
current, _ = Website.objects.get_or_create(website="city{}.com".format(x))
|
||||||
|
you, _ = Contact.objects.get_or_create(
|
||||||
|
first_name="{} Testy you".format(x),
|
||||||
|
last_name="{} Tester you".format(x),
|
||||||
|
title="{} Admin Tester".format(x),
|
||||||
|
email="mayor@igorville.gov",
|
||||||
|
phone="(555) 555 5556",
|
||||||
|
)
|
||||||
|
other, _ = Contact.objects.get_or_create(
|
||||||
|
first_name="{} Testy".format(x),
|
||||||
|
last_name="{} Tester".format(x),
|
||||||
|
title="{} Another Tester".format(x),
|
||||||
|
email="{}testy2@town.com".format(x),
|
||||||
|
phone="(555) 555 5557",
|
||||||
|
)
|
||||||
|
domain_application_kwargs = dict(
|
||||||
|
organization_type="federal",
|
||||||
|
federal_type="executive",
|
||||||
|
purpose="Purpose of the site",
|
||||||
|
is_policy_acknowledged=True,
|
||||||
|
organization_name="{}Testorg".format(x),
|
||||||
|
address_line1="address 1",
|
||||||
|
address_line2="address 2",
|
||||||
|
state_territory="NY",
|
||||||
|
zipcode="10002",
|
||||||
|
authorizing_official=ao,
|
||||||
|
requested_domain=domain,
|
||||||
|
submitter=you,
|
||||||
|
creator=user,
|
||||||
|
status=status,
|
||||||
|
)
|
||||||
|
if has_type_of_work:
|
||||||
|
domain_application_kwargs["type_of_work"] = "e-Government"
|
||||||
|
if has_anything_else:
|
||||||
|
domain_application_kwargs["anything_else"] = "There is more"
|
||||||
|
|
||||||
|
application, _ = DomainApplication.objects.get_or_create(
|
||||||
|
**domain_application_kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
if has_other_contacts:
|
||||||
|
application.other_contacts.add(other)
|
||||||
|
if has_current_website:
|
||||||
|
application.current_websites.add(current)
|
||||||
|
if has_alternative_gov_domain:
|
||||||
|
application.alternative_domains.add(alt)
|
||||||
|
applications.append(application)
|
||||||
|
|
||||||
|
return applications
|
|
@ -1,15 +1,17 @@
|
||||||
from django.test import TestCase, RequestFactory, Client
|
from django.test import TestCase, RequestFactory, Client
|
||||||
from django.contrib.admin.sites import AdminSite
|
from django.contrib.admin.sites import AdminSite
|
||||||
from registrar.admin import DomainApplicationAdmin, ListHeaderAdmin, MyUserAdmin
|
from registrar.admin import DomainApplicationAdmin, ListHeaderAdmin, MyUserAdmin, AuditedAdmin
|
||||||
from registrar.models import DomainApplication, DomainInformation, User
|
from registrar.models import DomainApplication, DomainInformation, User
|
||||||
from .common import completed_application, mock_user, create_superuser, create_user
|
from registrar.models.contact import Contact
|
||||||
|
from .common import completed_application, mock_user, create_superuser, create_user, multiple_completed_applications
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
import boto3_mocking # type: ignore
|
import boto3_mocking # type: ignore
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
class TestDomainApplicationAdmin(TestCase):
|
class TestDomainApplicationAdmin(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.site = AdminSite()
|
self.site = AdminSite()
|
||||||
|
@ -367,3 +369,44 @@ class MyUserAdminTest(TestCase):
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
User.objects.all().delete()
|
User.objects.all().delete()
|
||||||
|
|
||||||
|
class AuditedAdminTest(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.site = AdminSite()
|
||||||
|
self.factory = RequestFactory()
|
||||||
|
self.client = Client(HTTP_HOST="localhost:8080")
|
||||||
|
self.superuser = create_superuser()
|
||||||
|
self.factory.post
|
||||||
|
|
||||||
|
def test_alphabetically_sorted_fk_fields(self):
|
||||||
|
mock_client = MagicMock()
|
||||||
|
|
||||||
|
#tested_fields = [{"name": "submitter"}, {"name": "authorizing_official"}, {"name": "investigator"}, {"name": "creator"}, {"name": "user"}]
|
||||||
|
tested_fields = [DomainApplication.authorizing_official.field, DomainApplication.submitter.field, DomainApplication.investigator.field, DomainApplication.creator.field]
|
||||||
|
with boto3_mocking.clients.handler_for("sesv2", mock_client):
|
||||||
|
# Create a sample application - review status does not matter
|
||||||
|
applications = multiple_completed_applications(status=DomainApplication.IN_REVIEW)
|
||||||
|
# Create a mock request
|
||||||
|
request = self.factory.post(
|
||||||
|
"/admin/registrar/domainapplication/{}/change/".format(applications[0].pk)
|
||||||
|
)
|
||||||
|
|
||||||
|
model_admin = AuditedAdmin(DomainApplication, self.site)
|
||||||
|
|
||||||
|
for field in tested_fields:
|
||||||
|
desired_order = model_admin.get_queryset(request).order_by("{}__first_name".format(field.name))
|
||||||
|
current_sort_order = model_admin.formfield_for_foreignkey(field, request).queryset
|
||||||
|
|
||||||
|
self.assertEqual(desired_order, current_sort_order, "{} is not ordered alphabetically".format(field.name))
|
||||||
|
# Is initalized in alphabetical order
|
||||||
|
|
||||||
|
|
||||||
|
for x in model_admin.get_queryset(request).all():
|
||||||
|
logger.debug(x.authorizing_official)
|
||||||
|
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
DomainInformation.objects.all().delete()
|
||||||
|
DomainApplication.objects.all().delete()
|
||||||
|
User.objects.all().delete()
|
||||||
|
self.superuser.delete()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue