|
14 | 14 | Enrollment, |
15 | 15 | Homework, |
16 | 16 | HomeworkState, |
| 17 | + Question, |
| 18 | + QuestionTypes, |
| 19 | + Submission, |
| 20 | + Answer, |
17 | 21 | ReviewCriteria, |
18 | 22 | ReviewCriteriaTypes, |
19 | 23 | ProjectEvaluationScore, |
@@ -636,6 +640,84 @@ def test_homework_score_shows_message(self): |
636 | 640 | messages = list(response.context['messages']) |
637 | 641 | self.assertEqual(len(messages), 1) |
638 | 642 |
|
| 643 | + def test_course_admin_shows_most_frequent_answer_action(self): |
| 644 | + enrollment = Enrollment.objects.create( |
| 645 | + student=self.user, |
| 646 | + course=self.course, |
| 647 | + ) |
| 648 | + Submission.objects.create( |
| 649 | + homework=self.homework, |
| 650 | + student=self.user, |
| 651 | + enrollment=enrollment, |
| 652 | + ) |
| 653 | + self.client.login(username="admin@test.com", password="admin123") |
| 654 | + |
| 655 | + response = self.client.get( |
| 656 | + reverse("cadmin_course", kwargs={"course_slug": self.course.slug}) |
| 657 | + ) |
| 658 | + |
| 659 | + self.assertEqual(response.status_code, 200) |
| 660 | + self.assertContains(response, "Select most frequent answer") |
| 661 | + self.assertContains( |
| 662 | + response, |
| 663 | + reverse( |
| 664 | + "cadmin_homework_set_correct_answers", |
| 665 | + kwargs={ |
| 666 | + "course_slug": self.course.slug, |
| 667 | + "homework_slug": self.homework.slug, |
| 668 | + }, |
| 669 | + ), |
| 670 | + ) |
| 671 | + |
| 672 | + def test_homework_set_correct_answers_uses_most_frequent_answer(self): |
| 673 | + question = Question.objects.create( |
| 674 | + homework=self.homework, |
| 675 | + text="Pick one", |
| 676 | + question_type=QuestionTypes.MULTIPLE_CHOICE.value, |
| 677 | + possible_answers="A\nB\nC", |
| 678 | + correct_answer="", |
| 679 | + ) |
| 680 | + |
| 681 | + for index, answer_text in enumerate(["2", "2", "1"], start=1): |
| 682 | + user = User.objects.create_user( |
| 683 | + username=f"student{index}@test.com", |
| 684 | + email=f"student{index}@test.com", |
| 685 | + password="12345", |
| 686 | + ) |
| 687 | + enrollment = Enrollment.objects.create( |
| 688 | + student=user, |
| 689 | + course=self.course, |
| 690 | + ) |
| 691 | + submission = Submission.objects.create( |
| 692 | + homework=self.homework, |
| 693 | + student=user, |
| 694 | + enrollment=enrollment, |
| 695 | + ) |
| 696 | + Answer.objects.create( |
| 697 | + submission=submission, |
| 698 | + question=question, |
| 699 | + answer_text=answer_text, |
| 700 | + ) |
| 701 | + |
| 702 | + self.client.login(username="admin@test.com", password="admin123") |
| 703 | + url = reverse( |
| 704 | + "cadmin_homework_set_correct_answers", |
| 705 | + kwargs={ |
| 706 | + "course_slug": self.course.slug, |
| 707 | + "homework_slug": self.homework.slug, |
| 708 | + }, |
| 709 | + ) |
| 710 | + response = self.client.post(url, follow=True) |
| 711 | + |
| 712 | + self.assertRedirects( |
| 713 | + response, |
| 714 | + reverse("cadmin_course", kwargs={"course_slug": self.course.slug}) |
| 715 | + ) |
| 716 | + question.refresh_from_db() |
| 717 | + self.assertEqual(question.correct_answer, "2") |
| 718 | + messages = list(response.context["messages"]) |
| 719 | + self.assertEqual(len(messages), 1) |
| 720 | + |
639 | 721 | def test_project_score_shows_message(self): |
640 | 722 | """Test that scoring project shows a message on the course admin page""" |
641 | 723 | self.client.login(username="admin@test.com", password="admin123") |
|
0 commit comments