Files
thrillwiki_django_no_react/parks/tests/README.md

2.1 KiB

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

Unit Tests

  • test_autocomplete_results: Validates search result filtering
  • test_search_form_valid: Ensures form validation works
  • test_autocomplete_class: Checks autocomplete configuration
  • test_search_with_filters: Verifies filter integration

Integration Tests

  • test_empty_search: Tests default behavior
  • test_partial_match_search: Validates partial text matching
  • test_htmx_request_handling: Ensures HTMX compatibility
  • test_view_mode_persistence: Checks view state management
  • test_unauthenticated_access: Verifies authentication requirements

Security Tests

Parks search implements a tiered access approach:

  • Basic search is public
  • Autocomplete requires authentication
  • Configuration set in settings.py: AUTOCOMPLETE_BLOCK_UNAUTHENTICATED = True

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