Exemple #1
0
    def test_total_points(self):
        quiz = QuizFactory(course=self.course, scoring_scheme=0)
        QuestionFactory(quiz=quiz)
        QuestionFactory(quiz=quiz)
        self.assertEqual(quiz.total_points(), 10)

        quiz.scoring_scheme = 1
        quiz.save()
        self.assertEqual(quiz.total_points(), 6)

        quiz.scoring_scheme = 2
        quiz.save()
        self.assertEqual(quiz.total_points(), 6)
Exemple #2
0
class QuizSubmissionTest(CourseTestMixin, TestCase):
    def setUp(self):
        self.setup_course()
        self.quiz = QuizFactory(course=self.course)
        self.question1 = QuestionFactory(quiz=self.quiz)
        self.question2 = QuestionFactory(quiz=self.quiz)

    def test_score_easy_quiz(self):
        self.quiz.scoring_scheme = 0
        self.quiz.save()

        submission = QuizSubmissionFactory(quiz=self.quiz, user=self.student)

        response = submission.questionresponse_set.get(question=self.question1)
        response.selected_position = 4
        response.save()
        correct_marker = response.questionresponsemarker_set.get(
            marker__correct=True)
        correct_marker.ordinal = 2
        correct_marker.save()
        self.assertEqual(response.user_question_points(), 0)

        response = submission.questionresponse_set.get(question=self.question2)
        response.selected_position = 4
        response.save()
        correct_marker = response.questionresponsemarker_set.get(
            marker__correct=True)
        correct_marker.ordinal = 1
        correct_marker.save()
        self.assertEqual(response.user_question_points(), 5)

        self.assertEqual(submission.user_points(), 5)
        self.assertEqual(submission.user_score(), 0.5)
        self.assertEqual(submission.user_score_percent(), 50)

    def test_score_medium_quiz(self):
        self.quiz.scoring_scheme = 1
        self.quiz.save()
        self.assertEqual(self.quiz.question_set.count(), 2)

        submission = QuizSubmissionFactory(quiz=self.quiz, user=self.student)

        response = submission.questionresponse_set.get(question=self.question1)
        response.selected_position = 1
        response.save()
        correct_marker = response.questionresponsemarker_set.get(
            marker__correct=True)
        correct_marker.ordinal = 2
        correct_marker.save()
        self.assertEqual(response.user_question_points(), -2)
        self.assertEqual(submission.questionresponse_set.count(), 2)

        response = submission.questionresponse_set.get(question=self.question2)
        response.selected_position = 5
        response.save()
        correct_marker = response.questionresponsemarker_set.get(
            marker__correct=True)
        correct_marker.ordinal = 1
        correct_marker.save()
        self.assertEqual(response.user_question_points(), 2)
        self.assertEqual(submission.questionresponse_set.count(), 2)

        self.assertEqual(submission.user_points(), 0)
        self.assertEqual(submission.user_score(), 0.0)
        self.assertEqual(submission.user_score_percent(), 0)

    def test_i_dont_know(self):
        submission = QuizSubmissionFactory(quiz=self.quiz, user=self.student)

        response = submission.questionresponse_set.get(question=self.question1)
        response.selected_position = 12
        response.save()
        correct_marker = response.questionresponsemarker_set.get(
            marker__correct=True)
        correct_marker.ordinal = 2
        correct_marker.save()
        self.assertEqual(response.user_question_points(), 0)

        response = submission.questionresponse_set.get(question=self.question2)
        response.selected_position = 12
        response.save()
        correct_marker = response.questionresponsemarker_set.get(
            marker__correct=True)
        correct_marker.ordinal = 1
        correct_marker.save()
        self.assertEqual(response.user_question_points(), 0)

        self.assertEqual(submission.user_points(), 0)
        self.assertEqual(submission.user_score(), 0.0)
        self.assertEqual(submission.user_score_percent(), 0)