Feat: introduce faker for testing assessment aggregate
This commit is contained in:
@@ -1,56 +1,102 @@
|
||||
from random import choice, randint
|
||||
|
||||
from faker import Faker
|
||||
|
||||
from backend.model.assessment import Assessment, Domain, Exercise, Question, Skill
|
||||
from backend.model.student import Tribe
|
||||
|
||||
|
||||
def build_tribe():
|
||||
return Tribe("plop", "2nd")
|
||||
faker = Faker()
|
||||
|
||||
|
||||
def build_tribe_assessment():
|
||||
tribe = build_tribe()
|
||||
assessment = Assessment("DS1", tribe, 1)
|
||||
return tribe, assessment
|
||||
def build_tribes(quantity=1):
|
||||
return [Tribe(name=faker.words(5), level=faker.words(5)) for _ in range(quantity)]
|
||||
|
||||
|
||||
def build_tribe_assessment_exercise():
|
||||
tribe, assessment = build_tribe_assessment()
|
||||
exercise = Exercise("ex1", assessment, "today")
|
||||
return tribe, assessment, exercise
|
||||
def build_tribe_assessment(tribe_qty=1, assessment_per_tribe=1):
|
||||
tribes = build_tribes(tribe_qty)
|
||||
|
||||
assessments = []
|
||||
for t in tribes:
|
||||
assessments += [
|
||||
Assessment("faker.words(5)", t, randint(1, 3))
|
||||
for _ in range(assessment_per_tribe)
|
||||
]
|
||||
|
||||
return tribes, assessments
|
||||
|
||||
|
||||
def build_skills():
|
||||
return [Skill("search", "Searching and finding")]
|
||||
def build_tribe_assessment_exercise(
|
||||
tribe_qty=1, assessment_per_tribe=1, exercise_per_assessment=1
|
||||
):
|
||||
tribes, assessments = build_tribe_assessment(tribe_qty, assessment_per_tribe)
|
||||
|
||||
exercises = []
|
||||
for assessment in assessments:
|
||||
exercises += [
|
||||
Exercise("faker.words(4)", assessment, "today")
|
||||
for _ in range(exercise_per_assessment)
|
||||
]
|
||||
|
||||
return tribes, assessments, exercises
|
||||
|
||||
|
||||
def build_domains():
|
||||
return [Domain("function", "Functions are great")]
|
||||
def build_skills(quantity=1):
|
||||
return [Skill(faker.words(6), faker.text()) for _ in range(quantity)]
|
||||
|
||||
|
||||
def build_tribe_assessment_exercise_question():
|
||||
tribe, assessment, exercise = build_tribe_assessment_exercise()
|
||||
def build_domains(quantity=1):
|
||||
return [Domain(faker.words(6), faker.text()) for _ in range(quantity)]
|
||||
|
||||
|
||||
def build_tribe_assessment_exercise_question(
|
||||
tribe_qty=1,
|
||||
assessment_per_tribe=1,
|
||||
exercise_per_assessment=1,
|
||||
question_per_exercise=1,
|
||||
):
|
||||
tribes, assessments, exercises = build_tribe_assessment_exercise(
|
||||
tribe_qty, assessment_per_tribe, exercise_per_assessment
|
||||
)
|
||||
|
||||
skills = build_skills()
|
||||
domains = build_domains()
|
||||
question = Question(
|
||||
"a",
|
||||
exercise,
|
||||
description="desc",
|
||||
skill=skills[0],
|
||||
domain=domains[0],
|
||||
is_leveled=True,
|
||||
scale=1,
|
||||
)
|
||||
return tribe, assessment, exercise, question
|
||||
|
||||
questions = []
|
||||
for exercise in exercises:
|
||||
questions += [
|
||||
Question(
|
||||
faker.words(2),
|
||||
exercise,
|
||||
description="desc",
|
||||
skill=choice(skills),
|
||||
domain=choice(domains),
|
||||
is_leveled=choice([True, False]),
|
||||
scale=randint(1, 20),
|
||||
)
|
||||
for _ in range(question_per_exercise)
|
||||
]
|
||||
|
||||
return tribes, assessments, exercises, questions
|
||||
|
||||
|
||||
def test_assessement_register_exercise():
|
||||
tribe, assessment, exercise = build_tribe_assessment_exercise()
|
||||
exercise_qty = randint(1, 10)
|
||||
tribes, assessments, exercises = build_tribe_assessment_exercise(
|
||||
exercise_per_assessment=exercise_qty
|
||||
)
|
||||
|
||||
assert len(assessment.exercises) == 1
|
||||
assert assessment.exercises[0] == exercise
|
||||
assert len(assessments[0].exercises) == exercise_qty
|
||||
assert assessments[0].exercises == exercises
|
||||
|
||||
|
||||
def test_exercise_register_question():
|
||||
tribe, assessment, exercise, question = build_tribe_assessment_exercise_question()
|
||||
question_qty = randint(1, 10)
|
||||
(
|
||||
tribes,
|
||||
assessments,
|
||||
exercises,
|
||||
questions,
|
||||
) = build_tribe_assessment_exercise_question(question_per_exercise=question_qty)
|
||||
|
||||
assert len(exercise.questions) == 1
|
||||
assert exercise.questions[0] == question
|
||||
assert len(exercises[0].questions) == question_qty
|
||||
assert exercises[0].questions == questions
|
||||
|
Reference in New Issue
Block a user