Пример #1
0
    def test_get_duplicate_scores_and_feedback(self):
        """
        Want to test that a submission with a single BC grade returns that grade, but
        a submission with BCs and multiple PEs returns the PE grade set
        (this situation happens with duplicates)
        """
        sub1 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        sub1.save()

        sub1_bc = test_util.get_grader("BC", score=1)
        sub1_bc.submission = sub1
        sub1_bc.save()

        sub2 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        sub2.is_duplicate_checked = True
        sub2.state = "F"
        sub2.save()

        sub2_bc = test_util.get_grader("BC", score=1)
        sub2_bc.submission = sub2
        sub2_bc.save()

        for pe_score in [2, 3, 4]:
            pe = test_util.get_grader("PE", score=pe_score)
            pe.submission = sub2
            pe.save()

        dup2 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        dup2.is_duplicate = True
        dup2.duplicate_submission_id = sub2.id
        dup2.save()

        expire_submissions.check_if_grading_finished_for_duplicates()

        fb1 = sub1.get_all_successful_scores_and_feedback()
        fb2 = sub2.get_all_successful_scores_and_feedback()
        fb_dup2 = dup2.get_all_successful_scores_and_feedback()
        self.assertEquals(fb1['score'], 1)
        self.assertEquals(set(fb2['score']), set([2, 3, 4]))
        self.assertEquals(set(fb_dup2['score']), set([2, 3, 4]))
Пример #2
0
    def test_get_duplicate_scores_and_feedback(self):
        """
        Want to test that a submission with a single BC grade returns that grade, but
        a submission with BCs and multiple PEs returns the PE grade set
        (this situation happens with duplicates)
        """
        sub1 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        sub1.save()

        sub1_bc = test_util.get_grader("BC", score=1)
        sub1_bc.submission = sub1
        sub1_bc.save()

        sub2 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        sub2.is_duplicate_checked = True
        sub2.state = "F"
        sub2.save()

        sub2_bc = test_util.get_grader("BC", score=1)
        sub2_bc.submission = sub2
        sub2_bc.save()

        for pe_score in [2, 3, 4]:
            pe = test_util.get_grader("PE", score=pe_score)
            pe.submission = sub2
            pe.save()

        dup2 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        dup2.is_duplicate = True
        dup2.duplicate_submission_id = sub2.id
        dup2.save()

        expire_submissions.check_if_grading_finished_for_duplicates()

        fb1 = sub1.get_all_successful_scores_and_feedback()
        fb2 = sub2.get_all_successful_scores_and_feedback()
        fb_dup2 = dup2.get_all_successful_scores_and_feedback()
        self.assertEquals(fb1['score'], 1)
        self.assertEquals(set(fb2['score']), set([2,3,4]))
        self.assertEquals(set(fb_dup2['score']), set([2,3,4]))
Пример #3
0
    def test_check_if_grading_finished_for_duplicates(self):
        test_sub = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub.save()
        handle_submission(test_sub)

        sl = StaffLocation(LOCATION)
        control = SubmissionControl(sl.latest_submission())

        for i in xrange(0, control.minimum_to_use_peer):
            test_sub = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
            test_sub.save()
            handle_submission(test_sub)
            test_grader = test_util.get_grader("IN")
            test_grader.submission = test_sub
            test_grader.save()

            test_sub.state = SubmissionState.finished
            test_sub.previous_grader_type = "IN"
            test_sub.posted_results_back_to_queue = True
            test_sub.save()

        test_sub2 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub2.save()
        handle_submission(test_sub2)
        self.assertTrue(test_sub2.is_duplicate)

        success = expire_submissions.check_if_grading_finished_for_duplicates()
        self.assertEqual(success, True)
        test_sub2.is_duplicate = False
        test_sub2.save()

        test_sub3 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub3.is_duplicate = False
        test_sub3.save()

        self.assertEqual(test_sub3.is_duplicate, False)
        test_sub3.has_been_duplicate_checked = False
        test_sub3.save()
        expire_submissions.mark_student_duplicate_submissions()
        test_sub3 = Submission.objects.get(id=test_sub3.id)
        self.assertEqual(test_sub3.is_duplicate, True)

        test_sub3.duplicate_submission_id = None
        test_sub3.is_plagiarized = False
        test_sub3.save()
        expire_submissions.add_in_duplicate_ids()
        test_sub3 = Submission.objects.get(id=test_sub3.id)
        self.assertTrue(test_sub3.duplicate_submission_id is not None)
Пример #4
0
    def test_check_if_grading_finished_for_duplicates(self):
        test_sub = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub.save()
        handle_submission(test_sub)

        sl = StaffLocation(LOCATION)
        control = SubmissionControl(sl.latest_submission())

        for i in xrange(0, control.minimum_to_use_peer):
            test_sub = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
            test_sub.save()
            handle_submission(test_sub)
            test_grader = test_util.get_grader("IN")
            test_grader.submission=test_sub
            test_grader.save()

            test_sub.state = SubmissionState.finished
            test_sub.previous_grader_type = "IN"
            test_sub.posted_results_back_to_queue = True
            test_sub.save()

        test_sub2 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub2.save()
        handle_submission(test_sub2)
        self.assertTrue(test_sub2.is_duplicate)

        success = expire_submissions.check_if_grading_finished_for_duplicates()
        self.assertEqual(success, True)
        test_sub2.is_duplicate = False
        test_sub2.save()

        test_sub3 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub3.is_duplicate = False
        test_sub3.save()

        self.assertEqual(test_sub3.is_duplicate, False)
        test_sub3.has_been_duplicate_checked = False
        test_sub3.save()
        expire_submissions.mark_student_duplicate_submissions()
        test_sub3 = Submission.objects.get(id=test_sub3.id)
        self.assertEqual(test_sub3.is_duplicate,True)

        test_sub3.duplicate_submission_id = None
        test_sub3.is_plagiarized = False
        test_sub3.save()
        expire_submissions.add_in_duplicate_ids()
        test_sub3 = Submission.objects.get(id=test_sub3.id)
        self.assertTrue(test_sub3.duplicate_submission_id is not None)
Пример #5
0
    def test_check_if_grading_finished_for_duplicates(self):

        for i in xrange(0,settings.MIN_TO_USE_PEER):
            test_sub = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
            test_sub.save()
            handle_submission(test_sub)
            test_grader = test_util.get_grader("IN")
            test_grader.submission=test_sub
            test_grader.save()

            test_sub.state = SubmissionState.finished
            test_sub.previous_grader_type = "IN"
            test_sub.posted_results_back_to_queue = True
            test_sub.save()

        test_sub2 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub2.save()
        handle_submission(test_sub2)
        self.assertTrue(test_sub2.is_duplicate)

        success = expire_submissions.check_if_grading_finished_for_duplicates()
        self.assertEqual(success, True)
        test_sub2.is_duplicate = False
        test_sub2.save()

        test_sub3 = test_util.get_sub("PE", STUDENT_ID, LOCATION, "PE")
        test_sub3.is_duplicate = False
        test_sub3.save()

        self.assertEqual(test_sub3.is_duplicate, False)
        expire_submissions.mark_student_duplicate_submissions()
        test_sub3 = Submission.objects.get(id=test_sub3.id)
        self.assertEqual(test_sub3.is_duplicate,True)

        test_sub3.duplicate_submission_id = None
        test_sub3.is_plagiarized = False
        test_sub3.save()
        expire_submissions.add_in_duplicate_ids()
        test_sub3 = Submission.objects.get(id=test_sub3.id)
        self.assertTrue(test_sub3.duplicate_submission_id is not None)