pdf-quiz-generator/backend/tests
Daniel 994733581e feat: access as one tree — branches, libraries, and an honest "everything"
Access lived in three screens over two tables: category grants in the
question manager, media-library grants in the image bank, and nothing at
all for articles. Nobody could see what one person actually held.

/access is one surface over the same tables. A person on the left,
everything they have on the right. A granted branch shows its children
as covered rather than as separately tickable — a checkbox that changes
nothing is where a permissions screen starts lying — and the count of
categories a grant actually reaches is stated, not implied.

"Everything" is the moderator role, and the page says so instead of
inventing a wildcard grant that would silently mean the same thing and
be impossible to audit. While it is on, the branches below are hidden,
because they no longer apply. Nobody can change their own access.

The gap this closes: an educator granted a branch could edit its
questions but not the articles filed under it — articles were
moderator-or-author only. An article is filed under a category, so a
grant over that branch now covers its reading too. No new table: the
inheritance that category grants already had does the work.

Backend 242/242, frontend 284/284.

Also: the split-view test now focuses the link rather than hovering it.
Hover starts a 350ms timer; focus reveals at once, because the component
does not make a keyboard reader wait. That takes the wall clock out of a
test about the split view. Earlier failures were it losing CPU to the
backend suite running alongside it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN
2026-09-11 12:53:56 +02:00
..
__init__.py Initial commit: PDF Quiz Generator app 2026-03-30 20:04:53 +00:00
test_access.py feat: access as one tree — branches, libraries, and an honest "everything" 2026-09-11 12:53:56 +02:00
test_ai_mode.py fix: a model call with no timeout, and tests that measured Redis 2026-09-10 22:02:50 +02:00
test_ai_mode_matching.py feat: exams as real data, AI-mode matching, and a continue-study panel 2026-09-10 02:08:38 +02:00
test_articles_cards.py feat: edit every view and its sources, with a way back to any earlier save 2026-09-10 18:27:52 +02:00
test_articles_migration.py feat: linked topic articles and card associations 2026-09-07 15:16:48 +02:00
test_bank_cleanup.py fix: MinIO name collision, and refuse to write an article from fragments 2026-09-10 17:31:53 +02:00
test_category_grants.py feat: analysis recommendations, category grants, compact question header 2026-09-09 18:47:32 +02:00
test_category_migration.py fix: close custom-test review gaps and verify grading 2026-09-07 02:07:58 +02:00
test_comments_ai.py fix: refine uses existing article content and validate AI section IDs 2026-09-07 17:44:15 +02:00
test_exam_scoped_tags.py feat: real organ systems, symptoms grouped by system, and admin taxonomy CRUD 2026-09-10 10:44:39 +02:00
test_exams.py feat: exams as real data, AI-mode matching, and a continue-study panel 2026-09-10 02:08:38 +02:00
test_global_search.py feat: one search across reading, questions, cards and images 2026-09-10 11:59:58 +02:00
test_hybrid_search.py feat: media as a searchable corpus, ready for a vision embedder 2026-09-10 02:22:52 +02:00
test_login_without_turnstile.py fix: remove Turnstile from quiz password login 2026-09-07 02:54:12 +02:00
test_media_library.py feat: real organ systems, symptoms grouped by system, and admin taxonomy CRUD 2026-09-10 10:44:39 +02:00
test_multi_category.py feat: key points smart links, difficulty tags, adaptive sessions, educator-only question management 2026-09-09 02:26:45 +02:00
test_option_explanations.py feat: key points smart links, difficulty tags, adaptive sessions, educator-only question management 2026-09-09 02:26:45 +02:00
test_question_versions.py feat: question version history with restore; TODO list 2026-09-10 02:27:44 +02:00
test_quiz_builder.py docs: how the recommendations and adaptive session work, plus two fixes 2026-09-11 12:37:25 +02:00
test_quiz_sessions.py feat: knowledge profile grouped by Articles, Systems or Disciplines 2026-09-11 12:33:05 +02:00
test_related_privacy.py feat: key points smart links, difficulty tags, adaptive sessions, educator-only question management 2026-09-09 02:26:45 +02:00
test_session_lifecycle.py fix: one analysis layout, and an unsat session is the same page at zero 2026-09-11 05:08:56 +02:00
test_share_public.py feat: shareable quiz links, moderated comments and AI authoring 2026-09-07 17:10:08 +02:00
test_shared_category.py feat: flashcard decks share the question and article category tree 2026-09-10 01:40:03 +02:00
test_study_plan_editing.py feat: study plans you can open, work through, and edit 2026-09-10 12:10:39 +02:00
test_study_plan_sessions.py feat: study-plan blocks as modules, sessions that know their block 2026-09-11 04:31:21 +02:00
test_study_tools.py feat: key points smart links, difficulty tags, adaptive sessions, educator-only question management 2026-09-09 02:26:45 +02:00
test_study_tools_migration.py fix: preserve saved quiz progress across resume failures 2026-09-07 03:34:55 +02:00
test_tag_hierarchy.py feat: real organ systems, symptoms grouped by system, and admin taxonomy CRUD 2026-09-10 10:44:39 +02:00