Files
thrillwiki_django_no_react/backend/apps/parks/tests_disabled/README.md
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

4.1 KiB

Park Search Tests

Why These Tests Are Disabled

These tests were disabled because they need updating to work with the new ParkLocation model instead of the generic Location model. The model refactoring changed how location data is stored and accessed for parks.

Re-enabling These Tests

To re-enable these tests, follow these steps:

  1. Update model imports in test_filters.py and test_models.py:

    • Replace from apps.locations.models import Location with from apps.parks.models import ParkLocation
    • Update any other location-related imports
  2. Update test fixtures to use ParkLocation instead of Location:

    • Change factory classes to create ParkLocation instances
    • Update fixture data to match the new model structure
  3. Update assertions to match new model structure:

    • Adjust field references (e.g., park.location may now be park.park_location)
    • Update any serializer-based assertions
  4. Move files back to the active test directory:

    mv backend/apps/parks/tests_disabled/*.py backend/apps/parks/tests/
    
  5. Run tests to verify they pass:

    uv run pytest backend/apps/parks/tests/
    

Tracking: See TODO(THRILLWIKI-XXX) for tracking issue


Overview

Test suite for the park search functionality including:

  • Autocomplete widget integration
  • Search form validation
  • Filter integration
  • HTMX interaction
  • View mode persistence

Running Tests

# Run all park tests
uv run pytest parks/tests/

# Run specific search tests
uv run pytest parks/tests/test_search.py

# Run with coverage
uv run pytest --cov=parks parks/tests/

Test Coverage

Search API Tests

  • test_search_json_format: Validates API response structure
  • test_empty_search_json: Tests empty search handling
  • test_search_format_validation: Verifies all required fields and types
  • test_suggestion_limit: Confirms 8-item result limit

Search Functionality Tests

  • test_autocomplete_results: Validates real-time suggestion filtering
  • test_search_with_filters: Tests filter integration with search
  • test_partial_match_search: Verifies partial text matching works

UI Integration Tests

  • test_view_mode_persistence: Ensures view mode is maintained
  • test_empty_search: Tests default state behavior
  • test_htmx_request_handling: Validates HTMX interactions

Data Format Tests

  • Field types validation
  • Location formatting
  • Status display formatting
  • URL generation
  • Response structure

Frontend Integration

  • HTMX partial updates
  • Alpine.js state management
  • Loading indicators
  • View mode persistence
  • Keyboard navigation

Test Commands

# Run all park tests
uv run pytest parks/tests/

# Run search tests specifically
uv run pytest parks/tests/test_search.py

# Run with coverage
uv run pytest --cov=parks parks/tests/

Coverage Areas

  1. Search Functionality:

    • Suggestion generation
    • Result filtering
    • Partial matching
    • Empty state handling
  2. UI Integration:

    • HTMX requests
    • View mode switching
    • Loading states
    • Error handling
  3. Performance:

    • Result limiting
    • Debouncing
    • Query optimization
  4. Accessibility:

    • ARIA attributes
    • Keyboard controls
    • Screen reader support

Configuration

Tests use pytest-django and require:

  • PostgreSQL database
  • HTMX middleware
  • Autocomplete app configuration

Fixtures

The test suite uses standard Django test fixtures. No additional fixtures required.

Common Issues

  1. Database Errors

    • Ensure PostGIS extensions are installed
    • Verify database permissions
  2. HTMX Tests

    • Use HTTP_HX_REQUEST header for HTMX requests
    • Check response content for HTMX attributes

Adding New Tests

When adding tests, ensure:

  1. Database isolation using @pytest.mark.django_db
  2. Proper test naming following test_* convention
  3. Clear test descriptions in docstrings
  4. Coverage for both success and failure cases
  5. HTMX interaction testing where applicable

Future Improvements

  • Add performance benchmarks
  • Include accessibility tests
  • Add Playwright e2e tests
  • Implement geographic search tests