mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-22 23:51:09 -05:00
81 lines
2.1 KiB
Markdown
81 lines
2.1 KiB
Markdown
# 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 |