- Test /api/get-works route:
- Unique works extraction with correct chunk counts
- Sorting by author then title
- Connection failure and query exception handling
- Edge cases: empty database, missing title/author
- Test /chat/send selected_works parameter:
- Accepts empty list (search all works)
- Accepts valid work title list
- Rejects non-list types (string, dict)
- Rejects mixed types in list
- Verifies parameter passed to background thread
- Test rag_search works filter:
- No filter when selected_works is empty/None
- Contains_any filter applied when works selected
18 tests, all passing, no real Weaviate calls (fully mocked)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>