elemes/services/tests
a2nr 79edcd1596 fix: sync lesson registry termasuk sub-bab (sub-home.md) agar kolom materi muncul di CSV guru
lesson_specs() hanya memindai home.md root sehingga lesson di
bab/<folder>/sub-home.md tidak pernah masuk tabel lessons. Akibatnya kolom
materi sub-bab hilang saat guru import/export siswa CSV.

- services/lesson_service.py: tambah find_all_sub_home_folders() (enumerate
  level-1 folder di CONTENT_DIR berisi sub-home.md)
- services/lesson_registry.py: lesson_specs() gabungkan union root + sub-bab,
  dedupe slug (root priority) — satu lesson entitas
- services/tests/test_lesson_registry.py: test unit + DB integration

Verifikasi: 3 passed, 2 skipped (unit); test_sync_includes_sub_bab_lessons
passed (DB); 58 passed total termasuk test_repositories + student_management
tanpa regresi.
2026-08-14 07:07:25 +07:00
..
fixtures feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
__init__.py feat(embed): add raw HTML embed fence with bleach sanitization 2026-07-19 15:39:38 +07:00
conftest.py feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00
test_auth_routes.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
test_compile_sessions.py feat(storage): migrasi penyimpanan CSV ke PostgreSQL (SQLAlchemy + Alembic) 2026-08-08 04:57:08 +00:00
test_lesson_registry.py fix: sync lesson registry termasuk sub-bab (sub-home.md) agar kolom materi muncul di CSV guru 2026-08-14 07:07:25 +07:00
test_lesson_service_embed.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
test_lesson_service_quiz.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
test_models.py feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00
test_progress_routes.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
test_quiz_attempt_routes.py feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00
test_repositories.py feat(student-management): kelola siswa round-trip CSV + bulk delete (PG) 2026-08-09 07:29:19 +07:00
test_student_management_routes.py feat(student-management): kelola siswa round-trip CSV + bulk delete (PG) 2026-08-09 07:29:19 +07:00
test_student_roundtrip.py feat(student-management): kelola siswa round-trip CSV + bulk delete (PG) 2026-08-09 07:29:19 +07:00
test_sub_home.py feat: scope sub-home lesson lists & make sub-home cache mtime-aware 2026-08-13 20:08:50 +07:00
test_sub_home_api.py fix: show lesson progress on sub-home /bab pages 2026-08-14 05:23:50 +07:00
test_teacher_bootstrap.py feat(teacher): manajemen akun guru canonical + first-run otomatis; cabut backend CSV (PG only) 2026-08-09 11:21:08 +07:00
test_token_hashing.py feat(storage): migrasi penyimpanan CSV ke PostgreSQL (SQLAlchemy + Alembic) 2026-08-08 04:57:08 +00:00
test_token_service_contract.py feat(quiz): strict focus-loss anti-cheat + audit attempt 2026-08-11 20:55:39 +07:00