Example #1
0
    def test_find_active_assessments(self):
        buffy_answer, _ = self._create_student_and_submission("Buffy", "Buffy's answer")
        xander_answer, _ = self._create_student_and_submission("Xander", "Xander's answer")

        # Check for a workflow for Buffy.
        buffy_workflow = peer_api._get_workflow_by_submission_uuid(buffy_answer['uuid'])
        self.assertIsNotNone(buffy_workflow)

        # Check to see if Buffy is actively reviewing Xander's submission.
        # She isn't so we should get back no uuid.
        submission_uuid = peer_api._find_active_assessments(buffy_workflow)
        self.assertIsNone(submission_uuid)

        # Buffy is going to review Xander's submission, so create a workflow
        # item for Buffy.
        peer_api._create_peer_workflow_item(buffy_workflow, xander_answer["uuid"])

        # Check to see if Buffy is still actively reviewing Xander's submission.
        submission_uuid = peer_api._find_active_assessments(buffy_workflow)
        self.assertEqual(xander_answer["uuid"], submission_uuid)
Example #2
0
    def test_get_submission_for_over_grading(self):
        buffy_answer, _ = self._create_student_and_submission("Buffy", "Buffy's answer")
        xander_answer, _ = self._create_student_and_submission("Xander", "Xander's answer")
        willow_answer, _ = self._create_student_and_submission("Willow", "Willow's answer")

        buffy_workflow = peer_api._get_workflow_by_submission_uuid(buffy_answer['uuid'])
        xander_workflow = peer_api._get_workflow_by_submission_uuid(xander_answer['uuid'])
        willow_workflow = peer_api._get_workflow_by_submission_uuid(willow_answer['uuid'])

        # Get a bunch of workflow items opened up.
        peer_api._create_peer_workflow_item(buffy_workflow, xander_answer["uuid"])
        peer_api._create_peer_workflow_item(willow_workflow, xander_answer["uuid"])
        peer_api._create_peer_workflow_item(xander_workflow, xander_answer["uuid"])
        peer_api._create_peer_workflow_item(buffy_workflow, willow_answer["uuid"])
        peer_api._create_peer_workflow_item(xander_workflow, willow_answer["uuid"])

        # Get the next submission for review
        submission_uuid = peer_api._get_submission_for_over_grading(xander_workflow)

        if not (buffy_answer["uuid"] == submission_uuid or willow_answer["uuid"] == submission_uuid):
            self.fail("Submission was not Buffy or Willow's.")
Example #3
0
    def test_close_active_assessment(self):
        buffy_answer, buffy = self._create_student_and_submission("Buffy", "Buffy's answer")
        xander_answer, xander = self._create_student_and_submission("Xander", "Xander's answer")

        # Create a workflow for Buffy.
        buffy_workflow = peer_api._get_latest_workflow(buffy)

        # Get a workflow item opened up.
        submission = peer_api.get_submission_to_assess(buffy, 3)

        self.assertEqual(xander_answer["uuid"], submission["uuid"])

        assessment_dict = peer_api.create_assessment(
            xander_answer["uuid"], "Buffy", ASSESSMENT_DICT, RUBRIC_DICT,
            REQUIRED_GRADED_BY,
        )
        assessment = Assessment.objects.filter(
            scorer_id=assessment_dict["scorer_id"],
            scored_at=assessment_dict["scored_at"])[0]
        peer_api._close_active_assessment(buffy_workflow, xander_answer["uuid"], assessment, REQUIRED_GRADED_BY)

        item = peer_api._create_peer_workflow_item(buffy_workflow, xander_answer["uuid"])
        self.assertEqual(xander_answer["uuid"], submission["uuid"])
        self.assertIsNotNone(item.assessment)
Example #4
0
 def test_create_workflow_item_error(self, mock_filter):
     mock_filter.side_effect = DatabaseError("Oh no.")
     tim_answer, tim = self._create_student_and_submission("Tim", "Tim's answer", MONDAY)
     peer_api._create_peer_workflow_item(tim, tim_answer['uuid'])