Navigate to teacher.moicen.com, verify "课包" nav link is visible for
teacher/supervisor, click through to /course-packages, assert seeded
data renders. Catches frontend build/deploy regressions.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add pre-seeded course packages for 阿难 on moicen DB: 钢琴一对一课程,
声乐基础训练, 乐理知识速成 (INACTIVE). Update pagination tests to assert
specific names, ACTIVE filtering, sort order, and INACTIVE exclusion.
Extract shared loginAndGetJwt helper to reduce duplication.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
JWT sub.roles is an array of objects with role_key field, not plain
strings. Fix extractRoleKeys to map role_key from each role object.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Verify course_package endpoints are only accessible to TEACHER/SUPERVISOR
roles. Test full CRUD cycle and paginated listing APIs.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>