Skip to content

Commit

Permalink
add tests for results exporter average
Browse files Browse the repository at this point in the history
  • Loading branch information
fidoriel committed Jan 13, 2025
1 parent eca4e8b commit 382680b
Showing 1 changed file with 157 additions and 0 deletions.
157 changes: 157 additions & 0 deletions evap/results/tests/test_exporters.py
Original file line number Diff line number Diff line change
Expand Up @@ -590,3 +590,160 @@ def test_text_answer_export(self):
self.assertEqual(sheet.row_values(3)[0], questions[0].text)
self.assertEqual(sheet.row_values(5)[0], questions[1].text)
self.assertEqual(sheet.row_values(6)[0], questions[2].text)

def test_total_average(self):
program = baker.make(Program)

questionnaire = baker.make(Questionnaire, order=1, type=Questionnaire.Type.TOP)

question = baker.make(Question, type=QuestionType.POSITIVE_LIKERT, questionnaire=questionnaire)

evaluation_1 = baker.make(
Evaluation,
course__programs=[program],
state=Evaluation.State.PUBLISHED,
_participant_count=2,
_voter_count=2,
)

evaluation_2 = baker.make(
Evaluation,
course__programs=[program],
state=Evaluation.State.PUBLISHED,
_participant_count=2,
_voter_count=2,
)

evaluation_1.general_contribution.questionnaires.set([questionnaire])

make_rating_answer_counters(question, evaluation_1.general_contribution)

evaluation_2.general_contribution.questionnaires.set([questionnaire])

make_rating_answer_counters(question, evaluation_2.general_contribution)

cache_results(evaluation_1)
cache_results(evaluation_2)

binary_content = BytesIO()
ResultsExporter().export(
binary_content,
[evaluation_1.course.semester, evaluation_2.course.semester],
[
(
[course_program.id for course_program in evaluation_1.course.programs.all()]
+ [course_program.id for course_program in evaluation_2.course.programs.all()],
[evaluation_1.course.type.id, evaluation_2.course.type.id],
)
],
True,
True,
)
binary_content.seek(0)
workbook = xlrd.open_workbook(file_contents=binary_content.read())

self.assertEqual(
float(workbook.sheets()[0].row_values(5)[1]),
(float(workbook.sheets()[0].row_values(5)[2]) + float(workbook.sheets()[0].row_values(5)[3])) / 2,
)

self.assertEqual(workbook.sheets()[0].row_values(0)[1], "Average for this Question")

def test_not_all_contributions_are_created_equal(self):
program = baker.make(Program)

questionnaire_1 = baker.make(Questionnaire, order=1, type=Questionnaire.Type.TOP)
questionnaire_2 = baker.make(Questionnaire, order=4, type=Questionnaire.Type.TOP)

question_1 = baker.make(Question, type=QuestionType.POSITIVE_LIKERT, questionnaire=questionnaire_1)
question_2 = baker.make(Question, type=QuestionType.POSITIVE_LIKERT, questionnaire=questionnaire_2)

evaluation_1 = baker.make(
Evaluation,
course__programs=[program],
state=Evaluation.State.PUBLISHED,
_participant_count=2,
_voter_count=2,
)

evaluation_2 = baker.make(
Evaluation,
course__programs=[program],
state=Evaluation.State.PUBLISHED,
_participant_count=2,
_voter_count=2,
)

evaluation_1.general_contribution.questionnaires.set([questionnaire_1])

make_rating_answer_counters(question_1, evaluation_1.general_contribution)

evaluation_2.general_contribution.questionnaires.set([questionnaire_1, questionnaire_2])

make_rating_answer_counters(question_1, evaluation_2.general_contribution)
make_rating_answer_counters(question_2, evaluation_2.general_contribution)

cache_results(evaluation_1)
cache_results(evaluation_2)

binary_content = BytesIO()
ResultsExporter().export(
binary_content,
[evaluation_1.course.semester, evaluation_2.course.semester],
[
(
[course_program.id for course_program in evaluation_1.course.programs.all()]
+ [course_program.id for course_program in evaluation_2.course.programs.all()],
[evaluation_1.course.type.id, evaluation_2.course.type.id],
)
],
True,
True,
)
binary_content.seek(0)
workbook = xlrd.open_workbook(file_contents=binary_content.read())

self.assertEqual(float(workbook.sheets()[0].row_values(8)[1]), float(workbook.sheets()[0].row_values(8)[3]))
self.assertEqual("", workbook.sheets()[0].row_values(8)[2])

self.assertEqual(workbook.sheets()[0].row_values(0)[1], "Average for this Question")

def test_only_export_averages(self):
program = baker.make(Program)

questionnaire = baker.make(Questionnaire, order=1, type=Questionnaire.Type.TOP)

question = baker.make(Question, type=QuestionType.POSITIVE_LIKERT, questionnaire=questionnaire)

evaluation = baker.make(
Evaluation,
course__programs=[program],
state=Evaluation.State.PUBLISHED,
_participant_count=2,
_voter_count=2,
)

evaluation.general_contribution.questionnaires.set([questionnaire])

make_rating_answer_counters(question, evaluation.general_contribution)

cache_results(evaluation)

binary_content = BytesIO()
ResultsExporter().export(
binary_content,
[],
[
(
[],
[],
)
],
True,
True,
)
binary_content.seek(0)
workbook = xlrd.open_workbook(file_contents=binary_content.read())

self.assertEqual(workbook.sheets()[0].row_values(0)[1], "Average for this Question")
self.assertEqual(workbook.sheets()[0].row_values(5)[1], 1.0)

0 comments on commit 382680b

Please sign in to comment.