Skip to content

Commit

Permalink
Add fixtures to test question with multiple sub question conditions
Browse files Browse the repository at this point in the history
  • Loading branch information
juuso-j committed Mar 7, 2024
1 parent 413658a commit 0c222b4
Showing 1 changed file with 106 additions and 0 deletions.
106 changes: 106 additions & 0 deletions profiles/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,112 @@ def options_with_multiple_results(questions_test_result, results_test_result):
return Option.objects.all()


@pytest.mark.django_db
@pytest.fixture
def m_c_questions():
Question.objects.create(question="Question with subquesitons", number="42")
Question.objects.create(
question="Dont ask me if multiple subquestion are answered no", number="44"
)

return Question.objects.all()


@pytest.mark.django_db
@pytest.fixture
def m_c_sub_questions(m_c_questions):
question = m_c_questions.get(number="42")
SubQuestion.objects.create(question=question, description="yes/no", order_number=0)
SubQuestion.objects.create(question=question, description="yes/no", order_number=1)
SubQuestion.objects.create(question=question, description="yes/no", order_number=2)
return SubQuestion.objects.all()


@pytest.mark.django_db
@pytest.fixture
def m_c_options(m_c_questions, m_c_sub_questions):
for sub_question in m_c_sub_questions:
Option.objects.create(value="no", sub_question=sub_question)
Option.objects.create(value="yes", sub_question=sub_question)
return Option.objects.all()


@pytest.mark.django_db
@pytest.fixture
def m_c_question_conditions(m_c_questions, m_c_sub_questions, m_c_options):
question = m_c_questions.get(number="44")
question_condition = m_c_questions.get(number="42")
sub_question_condition = m_c_sub_questions.get(order_number=1)
option_condition = m_c_options.get(sub_question=sub_question_condition, value="no")
condition = QuestionCondition.objects.create(
question=question,
question_condition=question_condition,
sub_question_condition=sub_question_condition,
)
condition.option_conditions.add(option_condition)
sub_question_condition = m_c_sub_questions.get(order_number=2)
option_condition = m_c_options.get(sub_question=sub_question_condition, value="no")
condition = QuestionCondition.objects.create(
question=question,
question_condition=question_condition,
sub_question_condition=sub_question_condition,
)
condition.option_conditions.add(option_condition)
return QuestionCondition.objects.all()


@pytest.mark.django_db
@pytest.fixture
def m_c_users():
User.objects.create(username="condition false")
User.objects.create(username="condition true")
return User.objects.all()


@pytest.mark.django_db
@pytest.fixture
def m_c_answers(
m_c_users, m_c_questions, m_c_sub_questions, m_c_options, m_c_question_conditions
):
user = m_c_users.get(username="condition false")
question = m_c_questions.get(number="42")
sub_question = m_c_sub_questions.get(order_number=0)
option = m_c_options.get(sub_question=sub_question, value="yes")
Answer.objects.create(
user=user, question=question, sub_question=sub_question, option=option
)
sub_question = m_c_sub_questions.get(order_number=1)
option = m_c_options.get(sub_question=sub_question, value="no")
Answer.objects.create(
user=user, question=question, sub_question=sub_question, option=option
)
sub_question = m_c_sub_questions.get(order_number=2)
option = m_c_options.get(sub_question=sub_question, value="yes")
Answer.objects.create(
user=user, question=question, sub_question=sub_question, option=option
)

user = m_c_users.get(username="condition true")
question = m_c_questions.get(number="42")
sub_question = m_c_sub_questions.get(order_number=0)
option = m_c_options.get(sub_question=sub_question, value="yes")
Answer.objects.create(
user=user, question=question, sub_question=sub_question, option=option
)
sub_question = m_c_sub_questions.get(order_number=1)
option = m_c_options.get(sub_question=sub_question, value="no")
Answer.objects.create(
user=user, question=question, sub_question=sub_question, option=option
)
sub_question = m_c_sub_questions.get(order_number=2)
option = m_c_options.get(sub_question=sub_question, value="no")
Answer.objects.create(
user=user, question=question, sub_question=sub_question, option=option
)

return Answer.objects.all()


@pytest.mark.django_db
@pytest.fixture
def questions():
Expand Down

0 comments on commit 0c222b4

Please sign in to comment.