- Move modular Redis wait from uWSGI exec-pre to entrypoint (exec-pre runs under 'su -' which strips Docker env vars, so DISPATCHARR_ENV and REDIS_HOST were never available)
- Selective flush in modular mode: clears stale app state (stream locks, proxy metadata) while preserving Celery broker/result keys
- AIO mode unchanged: full flushdb via uWSGI exec-pre
- Update unit tests for both flush paths
- Fix Postgres version check failing with restricted DB users (use $POSTGRES_DB instead of hardcoded 'postgres')
- Fix DVR recording broken in modular mode (respect DISPATCHARR_PORT instead of hardcoding 9191)
- Remove flushdb() from wait_for_redis.py to prevent Redis data loss on container restart
- Add DISPATCHARR_PORT to celery environment in docker-compose.yml
- Add depends_on health conditions for proper service startup ordering
- Add extra_hosts for host.docker.internal resolution on Linux
- Harden celery entrypoint with timeouts for JWT wait (120s) and migration wait (300s)
- Replace fragile showmigrations grep with migrate --check
- Add unit tests for DVR port resolution and flushdb removal regression
- Add proper datetime validation in API with 400 error responses
- Fix test timestamp format (was creating invalid +00:00Z format)
- Time filters now properly validate and return errors on invalid input
- All 26 tests passing with correct filtering behavior
- Add pytest-based test suite with 32+ test cases
- Test all features: text search, AND/OR operators, regex, whole words
- Test time filtering: airing_at, start/end time ranges
- Test channel/stream/group filtering
- Test pagination and field selection
- Test edge cases and error handling
- Configurable via environment variables (host, port, credentials)
- Include test runner script and documentation
- Support for CI/CD integration with JUnit XML output
Usage:
./tests/run_tests.sh
pytest tests/test_epg_search_api.py -v
DISPATCHARR_HOST=192.168.1.180 pytest tests/test_epg_search_api.py -v