Covers full CRUD for each resource via testDb:
- promotions: list, create, get by id, not found, update, delete
- students: list, filter by promo, create, get, not found, update, delete
- roles: list, create, get with permissions, update+reset perms, delete
- modules: list, create, duplicate id rejection, get, not found, update, delete
27 integration tests passing in CI (act + Gitea Actions).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>