From e467c057c9402d97351e0fa5d7c0d8507aabcdde Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Tue, 19 Feb 2013 12:21:33 -0500 Subject: [PATCH 1/2] Fix test so we don't have to skip it anymore. --- .../xmodule/tests/test_self_assessment.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/common/lib/xmodule/xmodule/tests/test_self_assessment.py b/common/lib/xmodule/xmodule/tests/test_self_assessment.py index 0ebfe64bfb..ca444f9083 100644 --- a/common/lib/xmodule/xmodule/tests/test_self_assessment.py +++ b/common/lib/xmodule/xmodule/tests/test_self_assessment.py @@ -1,11 +1,10 @@ import json -from mock import Mock +from mock import Mock, MagicMock import unittest from xmodule.self_assessment_module import SelfAssessmentModule from xmodule.modulestore import Location from lxml import etree -from nose.plugins.skip import SkipTest from . import test_system @@ -60,13 +59,21 @@ class SelfAssessmentTest(unittest.TestCase): self.assertTrue("This is sample prompt text" in html) def test_self_assessment_flow(self): - raise SkipTest() + responses = {'assessment': '0', 'score_list[]': ['0', '0']} + def get_fake_item(name): + return responses[name] + + mock_query_dict = MagicMock() + mock_query_dict.__getitem__.side_effect = get_fake_item + mock_query_dict.getlist = get_fake_item + + self.assertEqual(self.module.get_score()['score'], 0) self.module.save_answer({'student_answer': "I am an answer"}, test_system) self.assertEqual(self.module.state, self.module.ASSESSING) - self.module.save_assessment({'assessment': '0'}, test_system) + self.module.save_assessment(mock_query_dict, test_system) self.assertEqual(self.module.state, self.module.DONE) @@ -76,5 +83,6 @@ class SelfAssessmentTest(unittest.TestCase): # if we now assess as right, skip the REQUEST_HINT state self.module.save_answer({'student_answer': 'answer 4'}, test_system) - self.module.save_assessment({'assessment': '1'}, test_system) + responses['assessment'] = '1' + self.module.save_assessment(mock_query_dict, test_system) self.assertEqual(self.module.state, self.module.DONE) From 6e453c2b8b0af15671bf9f8144af503cef2a63fc Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Wed, 20 Feb 2013 13:36:09 -0500 Subject: [PATCH 2/2] Clean up and fix some peer grading tests. --- .../xmodule/xmodule/peer_grading_service.py | 5 +- lms/djangoapps/open_ended_grading/tests.py | 62 +++++++++++++------ 2 files changed, 45 insertions(+), 22 deletions(-) diff --git a/common/lib/xmodule/xmodule/peer_grading_service.py b/common/lib/xmodule/xmodule/peer_grading_service.py index 8c50b6ff0a..9363097a1f 100644 --- a/common/lib/xmodule/xmodule/peer_grading_service.py +++ b/common/lib/xmodule/xmodule/peer_grading_service.py @@ -115,7 +115,7 @@ class MockPeerGradingService(object): 'max_score': 4}) def save_grade(self, location, grader_id, submission_id, - score, feedback, submission_key): + score, feedback, submission_key, rubric_scores, submission_flagged): return json.dumps({'success': True}) def is_student_calibrated(self, problem_location, grader_id): @@ -131,7 +131,8 @@ class MockPeerGradingService(object): 'max_score': 4}) def save_calibration_essay(self, problem_location, grader_id, - calibration_essay_id, submission_key, score, feedback): + calibration_essay_id, submission_key, score, + feedback, rubric_scores): return {'success': True, 'actual_score': 2} def get_problem_list(self, course_id, grader_id): diff --git a/lms/djangoapps/open_ended_grading/tests.py b/lms/djangoapps/open_ended_grading/tests.py index 710b8ceace..9350832719 100644 --- a/lms/djangoapps/open_ended_grading/tests.py +++ b/lms/djangoapps/open_ended_grading/tests.py @@ -15,7 +15,7 @@ import courseware.tests.tests as ct from xmodule.modulestore.django import modulestore import xmodule.modulestore.django from nose import SkipTest -from mock import patch, Mock +from mock import patch, Mock, MagicMock import json from xmodule.x_module import ModuleSystem from mitxmako.shortcuts import render_to_string @@ -164,23 +164,35 @@ class TestPeerGradingService(ct.PageLoader): def test_get_next_submission_missing_location(self): data = {} - r = self.peer_module.get_next_submission(data) - d = r + d = self.peer_module.get_next_submission(data) self.assertFalse(d['success']) self.assertEqual(d['error'], "Missing required keys: location") def test_save_grade_success(self): - raise SkipTest() - data = 'rubric_scores[]=1|rubric_scores[]=2|location=' + self.location + '|submission_id=1|submission_key=fake key|score=2|feedback=feedback|submission_flagged=False' - qdict = QueryDict(data.replace("|", "&")) + data = { + 'rubric_scores[]': [0, 0], + 'location': self.location, + 'submission_id': 1, + 'submission_key': 'fake key', + 'score': 2, + 'feedback': 'feedback', + 'submission_flagged': 'false' + } + + qdict = MagicMock() + def fake_get_item(key): + return data[key] + qdict.__getitem__.side_effect = fake_get_item + qdict.getlist = fake_get_item + qdict.keys = data.keys + r = self.peer_module.save_grade(qdict) - d = r + d = json.loads(r) self.assertTrue(d['success']) def test_save_grade_missing_keys(self): data = {} - r = self.peer_module.save_grade(data) - d = r + d = self.peer_module.save_grade(data) self.assertFalse(d['success']) self.assertTrue(d['error'].find('Missing required keys:') > -1) @@ -193,8 +205,7 @@ class TestPeerGradingService(ct.PageLoader): def test_is_calibrated_failure(self): data = {} - r = self.peer_module.is_student_calibrated(data) - d = r + d = self.peer_module.is_student_calibrated(data) self.assertFalse(d['success']) self.assertFalse('calibrated' in d) @@ -214,25 +225,36 @@ class TestPeerGradingService(ct.PageLoader): def test_show_calibration_essay_missing_key(self): data = {} - r = self.peer_module.show_calibration_essay(data) - d = r + d = self.peer_module.show_calibration_essay(data) self.assertFalse(d['success']) self.assertEqual(d['error'], "Missing required keys: location") def test_save_calibration_essay_success(self): - raise SkipTest() - data = 'rubric_scores[]=1|rubric_scores[]=2|location=' + self.location + '|submission_id=1|submission_key=fake key|score=2|feedback=feedback|submission_flagged=False' - qdict = QueryDict(data.replace("|", "&")) - r = self.peer_module.save_calibration_essay(qdict) - d = r + data = { + 'rubric_scores[]': [0, 0], + 'location': self.location, + 'submission_id': 1, + 'submission_key': 'fake key', + 'score': 2, + 'feedback': 'feedback', + 'submission_flagged': 'false' + } + + qdict = MagicMock() + def fake_get_item(key): + return data[key] + qdict.__getitem__.side_effect = fake_get_item + qdict.getlist = fake_get_item + qdict.keys = data.keys + + d = self.peer_module.save_calibration_essay(qdict) self.assertTrue(d['success']) self.assertTrue('actual_score' in d) def test_save_calibration_essay_missing_keys(self): data = {} - r = self.peer_module.save_calibration_essay(data) - d = r + d = self.peer_module.save_calibration_essay(data) self.assertFalse(d['success']) self.assertTrue(d['error'].find('Missing required keys:') > -1) self.assertFalse('actual_score' in d)