mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-24 05:51:11 -05:00
- 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.
157 lines
5.2 KiB
Python
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
|