ce1f4847f3
Fix test_list_filters test (filter_id field name mismatch). Add tests for audio filters, template store, and source store. All 678 tests pass, ruff clean, tsc clean, esbuild clean. No dead code remaining from old source types.
3.6 KiB
3.6 KiB
Phase 7: Testing & Polish
Status: ✅ Done Parent plan: PLAN.md Domain: backend
Objective
Verify the full feature works end-to-end, write tests, fix any remaining issues, and clean up dead code.
Tasks
- Task 1: Write unit tests for each audio filter
- Test each filter transforms AudioAnalysis correctly
- Test stateful filters maintain and reset state
- Test edge cases: empty spectrum, zero rms, all-zero input
- Test filter option validation
- Task 2: Write unit tests for AudioFilterPipeline
- Test chain of filters produces expected output
- Test empty pipeline passes through unchanged
- Test reset() resets all stateful filters
- Task 3: Write integration tests for AudioProcessingTemplateStore
- CRUD operations
- Template composition (audio_filter_template) expansion
- Cycle detection in template composition
- Reference validation
- Task 4: Write integration tests for ProcessedAudioSource in AudioSourceStore
- CRUD operations
- Chain resolution (ProcessedAudioSource → ... → CaptureAudioSource)
- Cycle detection in source chains
- Reference validation (source + template must exist)
- Cascade delete checks
- Task 5: Write API tests for audio processing template endpoints
- Create, read, update, delete
- Validation errors (missing fields, invalid filter_ids)
- Reference check on delete
- Task 6: Write API tests for updated audio source endpoints
- Create/update ProcessedAudioSource and CaptureAudioSource
- Reject old types (mono, band_extract)
- Validation of source/template references
- Task 7: Verify backup/restore includes audio processing templates
- Create templates, backup, restore, verify they survive
- Task 8: Full build verification
ruff check src/ tests/ --fixpassesnpx tsc --noEmitpassesnpm run buildsucceedspy -3.13 -m pytest tests/ --no-cov -q— all tests pass
- Task 9: Clean up dead code
- Remove any remaining imports of
MonoAudioSource,BandExtractAudioSource - Remove old
band_filter.pyif fully superseded by the band_extract filter (or keep if still used elsewhere) - Remove unused schema classes
- Verify no orphaned i18n keys
- Remove any remaining imports of
- Task 10: Update system health/info endpoints if they enumerate audio source types
Files to Modify/Create
tests/test_audio_filters.py— create — filter unit teststests/test_audio_filter_pipeline.py— create — pipeline teststests/test_audio_processing_template_store.py— create — store teststests/test_audio_source_store.py— modify — updated for new typestests/test_audio_processing_templates_api.py— create — API teststests/test_audio_sources_api.py— modify — updated for new types- Various files — modify — dead code cleanup
Acceptance Criteria
- All new tests pass
- All existing tests pass (no regressions)
- Full build (Python + TypeScript) succeeds
- Ruff linting passes
- No dead code referencing removed types
- Backup/restore round-trips correctly with audio processing templates
Notes
- This is the Big Bang verification phase — the first time build + tests are enforced
- Expect some breakage from Phases 1-6 that needs fixing here
- Focus on fixing real issues, not cosmetic cleanup
band_filter.pymay still be used by the band_extract filter — check before removing
Review Checklist
- All tasks completed
- Code follows project conventions
- No unintended side effects
- Build passes
- Tests pass (new + existing)