from quantum_learning.curriculum import load_curriculum def _modules_for_band(curriculum, band_id: str): for band in curriculum.bands: if band.identifier == band_id: return band.modules raise AssertionError(f"Band {band_id} not found") def test_load_curriculum_exposes_bands_and_bundle_modules(): curriculum = load_curriculum() assert curriculum.title == "QuantumLearning" assert len(curriculum.bands) >= 5 assert len(curriculum) >= 14 assert [band.identifier for band in curriculum.bands[:3]] == [ "00-orientation", "01-foundations", "02-qiskit-engineering", ] assert curriculum[0].identifier == "00-course-blueprint" assert curriculum[-1].identifier == "15-capstone-circuit-design-review" assert curriculum[-1].mastery_gate def test_foundations_modules_have_full_ready_bundles(): curriculum = load_curriculum() modules = _modules_for_band(curriculum, "01-foundations") assert [module.identifier for module in modules] == [ "02-principles-and-circuit-literacy", "03-qubit-and-statevector-intuition", "04-gates-and-measurement", ] for module in modules: assert module.status == "ready" assert [notebook.kind for notebook in module.bundle] == [ "lecture", "lab", "problems", "studio", ] assert all(notebook.status == "ready" for notebook in module.bundle) def test_qiskit_engineering_modules_have_full_ready_bundles(): curriculum = load_curriculum() modules = _modules_for_band(curriculum, "02-qiskit-engineering") assert [module.identifier for module in modules] == [ "05-circuit-construction-and-analysis", "06-transpilation-and-visualization", "07-simulation-and-noise-models", ] for module in modules: assert module.status == "ready" assert [notebook.kind for notebook in module.bundle] == [ "lecture", "lab", "problems", "studio", ] assert all(notebook.status == "ready" for notebook in module.bundle) def test_algorithmic_design_modules_have_full_ready_bundles(): curriculum = load_curriculum() modules = _modules_for_band(curriculum, "03-algorithmic-design") assert [module.identifier for module in modules] == [ "08-deutsch-family-and-oracle-thinking", "09-bernstein-vazirani-and-structured-oracles", "10-qft-and-periodic-structure", "11-grover-and-amplitude-amplification", ] for module in modules: assert module.status == "ready" assert [notebook.kind for notebook in module.bundle] == [ "lecture", "lab", "problems", "studio", ] assert all(notebook.status == "ready" for notebook in module.bundle) def test_professional_design_modules_have_full_ready_bundles(): curriculum = load_curriculum() modules = _modules_for_band(curriculum, "04-professional-design") assert [module.identifier for module in modules] == [ "12-qiskit-patterns-and-workflow-design", "13-hardware-aware-redesign-studio", "14-noise-aware-verification-and-mitigation", "15-capstone-circuit-design-review", ] for module in modules: assert module.status == "ready" assert [notebook.kind for notebook in module.bundle] == [ "lecture", "lab", "problems", "studio", ] assert all(notebook.status == "ready" for notebook in module.bundle)