cert-study-app / tests /test_learning_lab_content.py
Kentlo's picture
Sync from GitHub b098d17dbed1a6386c212d28b4bfa6138ad59d75 (part 2)
8b7e28b verified
Raw
History Blame Contribute Delete
2.15 kB
from collections import Counter
from cert_study_app.services.docs_source_service import active_docs_sources, doc_source_by_id
from cert_study_app.services.learning_lab_service import PRACTICE_TASKS, lessons_for_track, quizzes_for_track
ACTIVE_TRACKS = ("linux", "azure", "tool_docs")
def test_learning_lab_content_has_no_duplicate_ids():
lesson_ids = [lesson.id for track in ACTIVE_TRACKS for lesson in lessons_for_track(track)]
quiz_ids = [quiz.id for track in ACTIVE_TRACKS for quiz in quizzes_for_track(track)]
practice_ids = [task.id for task in PRACTICE_TASKS]
assert [item_id for item_id, count in Counter(lesson_ids).items() if count > 1] == []
assert [item_id for item_id, count in Counter(quiz_ids).items() if count > 1] == []
assert [item_id for item_id, count in Counter(practice_ids).items() if count > 1] == []
def test_learning_lab_content_sources_are_registered():
source_ids = {
item.source_id
for track in ACTIVE_TRACKS
for item in [*lessons_for_track(track), *quizzes_for_track(track)]
}
assert sorted(source_id for source_id in source_ids if not doc_source_by_id(source_id)) == []
def test_learning_lab_quizzes_point_to_existing_lessons():
lesson_ids = {lesson.id for track in ACTIVE_TRACKS for lesson in lessons_for_track(track)}
assert sorted(
quiz.lesson_id
for track in ACTIVE_TRACKS
for quiz in quizzes_for_track(track)
if quiz.lesson_id not in lesson_ids
) == []
def test_learning_lab_has_exam_ready_content_volume():
assert len(lessons_for_track("linux")) >= 50
assert len(quizzes_for_track("linux")) >= 25
assert len([task for task in PRACTICE_TASKS if task.track == "linux"]) >= 30
assert len(lessons_for_track("azure")) >= 50
assert len(quizzes_for_track("azure")) >= 25
assert len(lessons_for_track("tool_docs")) >= 10
assert len(quizzes_for_track("tool_docs")) >= 7
def test_docs_sources_cover_active_tracks():
assert len(active_docs_sources("azure")) >= 20
assert len(active_docs_sources("linux")) >= 10
assert len(active_docs_sources("tool_docs")) >= 4