# 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 ```bash # 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