mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-21 10:31:09 -05:00
127 lines
2.9 KiB
Markdown
127 lines
2.9 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
|
|
|
|
### 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 |