This commit is contained in:
Ross
2023-09-02 10:24:17 +01:00
parent 06f1e7852d
commit f6d7bd594a
9 changed files with 349 additions and 43 deletions
+61 -22
View File
@@ -73,7 +73,12 @@ class ExamTester:
self.exam = exam = create_exam(db, ExamViews)
cidgroup1: CidUserGroup = CidUserGroup.objects.get(name="Group1")
assert exam in cidgroup1.physics_cid_user_groups.all()
match app_name:
case "physics":
assert exam in cidgroup1.physics_cid_user_groups.all()
case "sbas":
assert exam in cidgroup1.sba_cid_user_groups.all()
cid_user_1001 = CidUser.objects.get(cid=1001)
cid_user_1000 = CidUser.objects.get(cid=1000)
@@ -200,11 +205,16 @@ class ExamTester:
== question.stem
)
assert cid_take_soup.find("label", {"for": "id_a"}).string == question.a
assert cid_take_soup.find("label", {"for": "id_b"}).string == question.b
assert cid_take_soup.find("label", {"for": "id_c"}).string == question.c
assert cid_take_soup.find("label", {"for": "id_d"}).string == question.d
assert cid_take_soup.find("label", {"for": "id_e"}).string == question.e
match self.app_name:
case "physics":
assert cid_take_soup.find("label", {"for": "id_a"}).string == question.a
assert cid_take_soup.find("label", {"for": "id_b"}).string == question.b
assert cid_take_soup.find("label", {"for": "id_c"}).string == question.c
assert cid_take_soup.find("label", {"for": "id_d"}).string == question.d
assert cid_take_soup.find("label", {"for": "id_e"}).string == question.e
case "sbas":
assert cid_take_soup.find("ul", {"class": "sba-answer-list"}) is not None
assert len(cid_take_soup.find("ul", {"class": "sba-answer-list"}).find_all("li")) == 5
# As we haven't submitted any answers they should all be blank
assert (
@@ -379,17 +389,27 @@ class ExamTester:
alert = cid_exam_scores_soup.find("div", {"class": "alert"})
assert "Results are not currently published." in str(alert)
# Check that we are showing enough questions / answers
answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
assert len(answer_lis) == 5 * len(self.generated_questions)
submitted_answers = cid_exam_scores_soup.find_all(
"span", {"class": "submitted-user-answer"}
)
assert len(submitted_answers) == 5 * len(self.generated_questions)
for ans in submitted_answers:
assert ans.text.strip() == "True"
# Check that we are showing enough questions / answers
match self.app_name:
case "physics":
answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
assert len(answer_lis) == 5 * len(self.generated_questions)
assert len(submitted_answers) == 5 * len(self.generated_questions)
for ans in submitted_answers:
assert ans.text.strip() == "True"
case "sbas":
answer_lis = cid_exam_scores_soup.find_all("li", {"class": "user-answer-li"})
assert len(answer_lis) == len(self.generated_questions)
assert len(submitted_answers) == len(self.generated_questions)
for ans in submitted_answers:
assert ans.text.strip() == "a"
# Check no correct answers are shown
assert not cid_exam_scores_soup.find_all("span", {"class": "correct-answer"})
@@ -401,20 +421,39 @@ class ExamTester:
cid_exam_scores_res = self.client.get(exam_scores_url)
cid_exam_scores_soup = BeautifulSoup(cid_exam_scores_res.content, "html.parser")
answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
assert len(answer_lis) == 5 * len(self.generated_questions)
submitted_answers = cid_exam_scores_soup.find_all(
"span", {"class": "submitted-user-answer"}
)
assert len(submitted_answers) == 5 * len(self.generated_questions)
match self.app_name:
case "physics":
answer_lis = cid_exam_scores_soup.find_all("li", {"class": "question-part"})
assert len(answer_lis) == 5 * len(self.generated_questions)
assert len(submitted_answers) == 5 * len(self.generated_questions)
for ans in submitted_answers[:-5]:
assert ans.text.strip() == "True"
# The new question will not have any answers
for ans in submitted_answers[-5:]:
assert ans.text.strip() == ""
case "sbas":
answer_lis = cid_exam_scores_soup.find_all("li", {"class": "user-answer-li"})
assert len(answer_lis) == len(self.generated_questions)
assert len(submitted_answers) == len(self.generated_questions)
print(submitted_answers)
for ans in submitted_answers[:3]:
print("test1", ans)
assert ans.text.strip() == "a"
# The new question will not have any answers
for ans in submitted_answers[3:]:
print("test2", ans)
assert ans.text.strip() == ""
for ans in submitted_answers[:-5]:
assert ans.text.strip() == "True"
# The new question will not have any answers
for ans in submitted_answers[-5:]:
assert ans.text.strip() == ""
# Publish the results!
self.exam.publish_results = True