def test_get_latest_workflow(self): buffy_answer, buffy = self._create_student_and_submission("Buffy", "Buffy's answer") self._create_student_and_submission("Xander", "Xander's answer") self._create_student_and_submission("Willow", "Willow's answer") buffy_answer_two, buffy = self._create_student_and_submission("Buffy", "Buffy's answer") workflow = peer_api._get_latest_workflow(buffy) self.assertNotEqual(buffy_answer["uuid"], workflow.submission_uuid) self.assertEqual(buffy_answer_two["uuid"], workflow.submission_uuid)
def test_get_submission_for_review(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") self._create_student_and_submission("Willow", "Willow's answer") buffy_workflow = peer_api._get_latest_workflow(buffy) # Get the next submission for review submission_uuid = peer_api._get_submission_for_review(buffy_workflow, 3) self.assertEqual(xander_answer["uuid"], submission_uuid)
def test_get_submission_for_over_grading(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") willow_answer, willow = self._create_student_and_submission("Willow", "Willow's answer") buffy_workflow = peer_api._get_latest_workflow(buffy) xander_workflow = peer_api._get_latest_workflow(xander) willow_workflow = peer_api._get_latest_workflow(willow) # 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.")
def test_find_active_assessments(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") # Check for a workflow for Buffy. buffy_workflow = peer_api._get_latest_workflow(buffy) 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)
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)
def test_failure_to_get_latest_workflow(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._get_latest_workflow(tim)