Spaces:
Running
Running
| """Tests for studycraft.template subject-type detection and hints.""" | |
| import pytest | |
| from studycraft.template import ( | |
| CHAPTER_TEMPLATE, | |
| DIFFICULTY_HINTS, | |
| detect_subject_type, | |
| difficulty_hint, | |
| example_format_hint, | |
| ) | |
| def test_detect_subject_type(subject: str, expected: str): | |
| assert detect_subject_type(subject) == expected | |
| def test_format_hint_returns_string(): | |
| for stype in ("stem", "math", "language", "humanities"): | |
| hint = example_format_hint(stype) | |
| assert isinstance(hint, str) | |
| assert len(hint) > 10 | |
| def test_format_hint_unknown_type(): | |
| hint = example_format_hint("unknown_type") | |
| assert "appropriate format" in hint | |
| def test_difficulty_hint_all_levels(): | |
| for level in ("beginner", "intermediate", "advanced"): | |
| hint = difficulty_hint(level) | |
| assert isinstance(hint, str) | |
| assert "Target audience" in hint | |
| def test_difficulty_hint_unknown_falls_back(): | |
| hint = difficulty_hint("nonexistent") | |
| assert hint == DIFFICULTY_HINTS["intermediate"] | |
| def test_difficulty_hints_keys(): | |
| assert set(DIFFICULTY_HINTS.keys()) == {"beginner", "intermediate", "advanced"} | |
| def test_chapter_template_has_required_placeholders(): | |
| for placeholder in ("{chapter_num}", "{chapter_title}", "{subject}", "{subchapters}"): | |
| assert placeholder in CHAPTER_TEMPLATE, f"Missing placeholder: {placeholder}" | |
| def test_chapter_template_has_all_sections(): | |
| """Template must contain all 8 section headings the validator checks.""" | |
| for section in ( | |
| "Learning Objectives", | |
| "Core Concepts", | |
| "Worked Examples", | |
| "Practice Exercises", | |
| "Mini Project", | |
| "Chapter Quiz", | |
| "Reflection", | |
| "Tips & Common Mistakes", | |
| ): | |
| assert section in CHAPTER_TEMPLATE, f"Template missing section: {section}" | |