mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-10 13:13:24 +02:00
merge
This commit is contained in:
commit
cf67dee769
2 changed files with 33 additions and 12 deletions
|
@ -3,6 +3,7 @@ from django.urls import reverse
|
||||||
from .test_views import TestWithUser
|
from .test_views import TestWithUser
|
||||||
from django_webtest import WebTest # type: ignore
|
from django_webtest import WebTest # type: ignore
|
||||||
from django.utils.dateparse import parse_date
|
from django.utils.dateparse import parse_date
|
||||||
|
from api.tests.common import less_console_noise_decorator
|
||||||
|
|
||||||
|
|
||||||
class GetDomainsJsonTest(TestWithUser, WebTest):
|
class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
|
@ -11,9 +12,9 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
self.app.set_user(self.user.username)
|
self.app.set_user(self.user.username)
|
||||||
|
|
||||||
# Create test domains
|
# Create test domains
|
||||||
self.domain1 = Domain.objects.create(name="example1.com", expiration_date="2024-01-01", state="active")
|
self.domain1 = Domain.objects.create(name="example1.com", expiration_date="2024-01-01", state="unknown")
|
||||||
self.domain2 = Domain.objects.create(name="example2.com", expiration_date="2024-02-01", state="inactive")
|
self.domain2 = Domain.objects.create(name="example2.com", expiration_date="2024-02-01", state="dns needed")
|
||||||
self.domain3 = Domain.objects.create(name="example3.com", expiration_date="2024-03-01", state="active")
|
self.domain3 = Domain.objects.create(name="example3.com", expiration_date="2024-03-01", state="ready")
|
||||||
|
|
||||||
# Create UserDomainRoles
|
# Create UserDomainRoles
|
||||||
UserDomainRole.objects.create(user=self.user, domain=self.domain1)
|
UserDomainRole.objects.create(user=self.user, domain=self.domain1)
|
||||||
|
@ -25,6 +26,7 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
UserDomainRole.objects.all().delete()
|
UserDomainRole.objects.all().delete()
|
||||||
UserDomainRole.objects.all().delete()
|
UserDomainRole.objects.all().delete()
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
def test_get_domains_json_unauthenticated(self):
|
def test_get_domains_json_unauthenticated(self):
|
||||||
"""for an unauthenticated user, test that the user is redirected for auth"""
|
"""for an unauthenticated user, test that the user is redirected for auth"""
|
||||||
self.app.reset()
|
self.app.reset()
|
||||||
|
@ -32,6 +34,7 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
response = self.client.get(reverse("get_domains_json"))
|
response = self.client.get(reverse("get_domains_json"))
|
||||||
self.assertEqual(response.status_code, 302)
|
self.assertEqual(response.status_code, 302)
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
def test_get_domains_json_authenticated(self):
|
def test_get_domains_json_authenticated(self):
|
||||||
"""Test that an authenticated user gets the list of 3 domains."""
|
"""Test that an authenticated user gets the list of 3 domains."""
|
||||||
response = self.app.get(reverse("get_domains_json"))
|
response = self.app.get(reverse("get_domains_json"))
|
||||||
|
@ -102,6 +105,7 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
)
|
)
|
||||||
self.assertEqual(svg_icon_expected, svg_icons[i])
|
self.assertEqual(svg_icon_expected, svg_icons[i])
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
def test_get_domains_json_search(self):
|
def test_get_domains_json_search(self):
|
||||||
"""Test search."""
|
"""Test search."""
|
||||||
# Define your URL variables as a dictionary
|
# Define your URL variables as a dictionary
|
||||||
|
@ -131,6 +135,7 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
domains[0],
|
domains[0],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
def test_pagination(self):
|
def test_pagination(self):
|
||||||
"""Test that pagination is correct in the response"""
|
"""Test that pagination is correct in the response"""
|
||||||
response = self.app.get(reverse("get_domains_json"), {"page": 1})
|
response = self.app.get(reverse("get_domains_json"), {"page": 1})
|
||||||
|
@ -143,6 +148,7 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
self.assertFalse(data["has_previous"])
|
self.assertFalse(data["has_previous"])
|
||||||
self.assertEqual(data["num_pages"], 1)
|
self.assertEqual(data["num_pages"], 1)
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
def test_sorting(self):
|
def test_sorting(self):
|
||||||
"""test that sorting works properly in the response"""
|
"""test that sorting works properly in the response"""
|
||||||
response = self.app.get(reverse("get_domains_json"), {"sort_by": "expiration_date", "order": "desc"})
|
response = self.app.get(reverse("get_domains_json"), {"sort_by": "expiration_date", "order": "desc"})
|
||||||
|
@ -161,6 +167,7 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
expiration_dates = [domain["expiration_date"] for domain in data["domains"]]
|
expiration_dates = [domain["expiration_date"] for domain in data["domains"]]
|
||||||
self.assertEqual(expiration_dates, sorted(expiration_dates))
|
self.assertEqual(expiration_dates, sorted(expiration_dates))
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
def test_sorting_by_state_display(self):
|
def test_sorting_by_state_display(self):
|
||||||
"""test that the state_display sorting works properly"""
|
"""test that the state_display sorting works properly"""
|
||||||
response = self.app.get(reverse("get_domains_json"), {"sort_by": "state_display", "order": "asc"})
|
response = self.app.get(reverse("get_domains_json"), {"sort_by": "state_display", "order": "asc"})
|
||||||
|
@ -178,3 +185,21 @@ class GetDomainsJsonTest(TestWithUser, WebTest):
|
||||||
# Check if sorted by state_display in descending order
|
# Check if sorted by state_display in descending order
|
||||||
states = [domain["state_display"] for domain in data["domains"]]
|
states = [domain["state_display"] for domain in data["domains"]]
|
||||||
self.assertEqual(states, sorted(states, reverse=True))
|
self.assertEqual(states, sorted(states, reverse=True))
|
||||||
|
|
||||||
|
@less_console_noise_decorator
|
||||||
|
def test_state_filtering(self):
|
||||||
|
"""Test that different states in request get expected responses."""
|
||||||
|
|
||||||
|
expected_values = [
|
||||||
|
("unknown", 1),
|
||||||
|
("ready", 0),
|
||||||
|
("expired", 2),
|
||||||
|
("ready,expired", 2),
|
||||||
|
("unknown,expired", 3),
|
||||||
|
]
|
||||||
|
for state, num_domains in expected_values:
|
||||||
|
with self.subTest(state=state, num_domains=num_domains):
|
||||||
|
response = self.app.get(reverse("get_domains_json"), {"status": state})
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
data = response.json
|
||||||
|
self.assertEqual(len(data["domains"]), num_domains)
|
||||||
|
|
|
@ -4,8 +4,6 @@ from registrar.models import UserDomainRole, Domain
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
import logging
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
@ -33,11 +31,11 @@ def get_domains_json(request):
|
||||||
if status_param:
|
if status_param:
|
||||||
status_list = status_param.split(",")
|
status_list = status_param.split(",")
|
||||||
|
|
||||||
# if unknown is in status_list, append 'dns needed'
|
# if unknown is in status_list, append 'dns needed' since both
|
||||||
if 'unknown' in status_list:
|
# unknown and dns needed display as DNS Needed, and both are
|
||||||
status_list.append('dns needed')
|
# searchable via state parameter of 'unknown'
|
||||||
|
if "unknown" in status_list:
|
||||||
logger.debug(f"Submitted status_list: {status_list}")
|
status_list.append("dns needed")
|
||||||
|
|
||||||
# Split the status list into normal states and custom states
|
# Split the status list into normal states and custom states
|
||||||
normal_states = [state for state in status_list if state in Domain.State.values]
|
normal_states = [state for state in status_list if state in Domain.State.values]
|
||||||
|
@ -53,8 +51,6 @@ def get_domains_json(request):
|
||||||
expired_domain_ids = [domain.id for domain in objects if domain.state_display() == "Expired"]
|
expired_domain_ids = [domain.id for domain in objects if domain.state_display() == "Expired"]
|
||||||
state_query |= Q(id__in=expired_domain_ids)
|
state_query |= Q(id__in=expired_domain_ids)
|
||||||
|
|
||||||
logger.debug(f"State query: {state_query}")
|
|
||||||
|
|
||||||
# Apply the combined query
|
# Apply the combined query
|
||||||
objects = objects.filter(state_query)
|
objects = objects.filter(state_query)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue