Files
thrillwiki_django_no_react/apps/parks/tests_disabled
2025-09-21 20:19:12 -04:00
..
2025-09-21 20:19:12 -04:00
2025-09-21 20:19:12 -04:00
2025-09-21 20:19:12 -04:00
2025-09-21 20:19:12 -04:00
2025-09-21 20:19:12 -04:00

Park Search Tests

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