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