Files
thrillwiki_django_no_react/backend/apps/parks/tests/test_admin.py
pacnpal edcd8f2076 Add secret management guide, client-side performance monitoring, and search accessibility enhancements
- Introduced a comprehensive Secret Management Guide detailing best practices, secret classification, development setup, production management, rotation procedures, and emergency protocols.
- Implemented a client-side performance monitoring script to track various metrics including page load performance, paint metrics, layout shifts, and memory usage.
- Enhanced search accessibility with keyboard navigation support for search results, ensuring compliance with WCAG standards and improving user experience.
2025-12-23 16:41:42 -05:00

157 lines
5.2 KiB
Python

"""
Tests for parks admin interfaces.
These tests verify the functionality of park, area, company, location,
and review admin classes including query optimization and custom actions.
"""
import pytest
from django.contrib.admin.sites import AdminSite
from django.contrib.auth import get_user_model
from django.test import RequestFactory, TestCase
from apps.parks.admin import (
CompanyAdmin,
CompanyHeadquartersAdmin,
ParkAdmin,
ParkAreaAdmin,
ParkLocationAdmin,
ParkReviewAdmin,
)
from apps.parks.models import Company, CompanyHeadquarters, Park, ParkArea, ParkLocation, ParkReview
User = get_user_model()
class TestParkAdmin(TestCase):
"""Tests for ParkAdmin class."""
def setUp(self):
self.factory = RequestFactory()
self.site = AdminSite()
self.admin = ParkAdmin(model=Park, admin_site=self.site)
def test_list_display_fields(self):
"""Verify all required fields are in list_display."""
required_fields = [
"name",
"formatted_location",
"status_badge",
"operator_link",
"ride_count",
"average_rating",
"created_at",
]
for field in required_fields:
assert field in self.admin.list_display
def test_list_select_related(self):
"""Verify select_related is configured for ForeignKeys."""
assert "operator" in self.admin.list_select_related
assert "property_owner" in self.admin.list_select_related
assert "location" in self.admin.list_select_related
def test_list_prefetch_related(self):
"""Verify prefetch_related is configured for reverse relations."""
assert "areas" in self.admin.list_prefetch_related
assert "rides" in self.admin.list_prefetch_related
def test_search_fields_include_relations(self):
"""Verify search includes related object fields."""
assert "location__city" in self.admin.search_fields
assert "operator__name" in self.admin.search_fields
def test_export_fields_configured(self):
"""Verify export fields are configured."""
assert hasattr(self.admin, "export_fields")
assert "id" in self.admin.export_fields
assert "name" in self.admin.export_fields
def test_actions_registered(self):
"""Verify custom actions are registered."""
request = self.factory.get("/admin/")
request.user = User(is_superuser=True)
actions = self.admin.get_actions(request)
assert "bulk_activate" in actions
assert "bulk_deactivate" in actions
assert "export_to_csv" in actions
class TestParkAreaAdmin(TestCase):
"""Tests for ParkAreaAdmin class."""
def setUp(self):
self.factory = RequestFactory()
self.site = AdminSite()
self.admin = ParkAreaAdmin(model=ParkArea, admin_site=self.site)
def test_list_select_related(self):
"""Verify select_related for park."""
assert "park" in self.admin.list_select_related
def test_list_prefetch_related(self):
"""Verify prefetch_related for rides."""
assert "rides" in self.admin.list_prefetch_related
class TestParkLocationAdmin(TestCase):
"""Tests for ParkLocationAdmin class."""
def setUp(self):
self.factory = RequestFactory()
self.site = AdminSite()
self.admin = ParkLocationAdmin(model=ParkLocation, admin_site=self.site)
def test_list_select_related(self):
"""Verify select_related for park."""
assert "park" in self.admin.list_select_related
def test_readonly_coordinates(self):
"""Verify coordinate fields are readonly."""
assert "latitude" in self.admin.readonly_fields
assert "longitude" in self.admin.readonly_fields
class TestCompanyAdmin(TestCase):
"""Tests for CompanyAdmin class."""
def setUp(self):
self.factory = RequestFactory()
self.site = AdminSite()
self.admin = CompanyAdmin(model=Company, admin_site=self.site)
def test_list_prefetch_related(self):
"""Verify prefetch_related for related parks."""
assert "operated_parks" in self.admin.list_prefetch_related
assert "owned_parks" in self.admin.list_prefetch_related
class TestParkReviewAdmin(TestCase):
"""Tests for ParkReviewAdmin class."""
def setUp(self):
self.factory = RequestFactory()
self.site = AdminSite()
self.admin = ParkReviewAdmin(model=ParkReview, admin_site=self.site)
def test_list_select_related(self):
"""Verify select_related for user and park."""
assert "park" in self.admin.list_select_related
assert "user" in self.admin.list_select_related
assert "moderated_by" in self.admin.list_select_related
def test_moderation_actions_registered(self):
"""Verify moderation actions are registered."""
request = self.factory.get("/admin/")
request.user = User(is_superuser=True)
actions = self.admin.get_actions(request)
assert "bulk_approve" in actions
assert "bulk_reject" in actions
def test_readonly_moderation_fields(self):
"""Verify moderation fields are readonly."""
assert "moderated_by" in self.admin.readonly_fields
assert "moderated_at" in self.admin.readonly_fields