Make tests pass again

This commit is contained in:
Victor Shnayder
2012-11-30 10:27:34 -05:00
parent d28cd4f429
commit 835f18795a
4 changed files with 45 additions and 10 deletions

View File

@@ -38,7 +38,7 @@ class MockStaffGradingService(object):
'rubric': 'A rubric'})
def save_grade(self, course_id, grader_id, submission_id, score, feedback):
return self.get_next(course_id)
return self.get_next(course_id, grader_id)
class StaffGradingService(object):
@@ -140,8 +140,28 @@ class StaffGradingService(object):
return r.text
_service = StaffGradingService(settings.STAFF_GRADING_INTERFACE)
#_service = MockStaffGradingService()
# don't initialize until grading_service() is called--means that just
# importing this file doesn't create objects that may not have the right config
_service = None
def grading_service():
"""
Return a staff grading service instance--if settings.MOCK_STAFF_GRADING is True,
returns a mock one, otherwise a real one.
Caches the result, so changing the setting after the first call to this
function will have no effect.
"""
global _service
if _service is not None:
return _service
if settings.MOCK_STAFF_GRADING:
_service = MockStaffGradingService()
else:
_service = StaffGradingService(settings.STAFF_GRADING_INTERFACE)
return _service
def _err_response(msg):
"""
@@ -194,7 +214,7 @@ def _get_next(course_id, grader_id):
"""
try:
return _service.get_next(course_id, grader_id)
return grading_service().get_next(course_id, grader_id)
except GradingServiceError:
log.exception("Error from grading service")
return json.dumps({'success': False, 'error': 'Could not connect to grading service'})
@@ -228,7 +248,7 @@ def save_grade(request, course_id):
p = request.POST
try:
result_json = _service.save_grade(course_id,
result_json = grading_service().save_grade(course_id,
grader_id,
p['submission_id'],
p['score'],

View File

@@ -233,6 +233,14 @@ class TestStaffGradingService(ct.PageLoader):
def setUp(self):
xmodule.modulestore.django._MODULESTORES = {}
self.student = 'view@test.com'
self.instructor = 'view2@test.com'
self.password = 'foo'
self.create_account('u1', self.student, self.password)
self.create_account('u2', self.instructor, self.password)
self.activate_user(self.student)
self.activate_user(self.instructor)
self.course_id = "edX/toy/2012_Fall"
self.toy = modulestore().get_course(self.course_id)
def make_instructor(course):
@@ -242,6 +250,8 @@ class TestStaffGradingService(ct.PageLoader):
make_instructor(self.toy)
self.mock_service = staff_grading_service.grading_service()
self.logout()
def test_access(self):
@@ -257,7 +267,6 @@ class TestStaffGradingService(ct.PageLoader):
self.check_for_post_code(404, url)
@patch.object(staff_grading_service, '_service', _mock_service)
def test_get_next(self):
self.login(self.instructor, self.password)
@@ -266,10 +275,9 @@ class TestStaffGradingService(ct.PageLoader):
r = self.check_for_get_code(200, url)
d = json.loads(r.content)
self.assertTrue(d['success'])
self.assertEquals(d['submission_id'], _mock_service.cnt)
self.assertEquals(d['submission_id'], self.mock_service.cnt)
@patch.object(staff_grading_service, '_service', _mock_service)
def test_save_grade(self):
self.login(self.instructor, self.password)
@@ -281,6 +289,6 @@ class TestStaffGradingService(ct.PageLoader):
r = self.check_for_post_code(200, url, data)
d = json.loads(r.content)
self.assertTrue(d['success'], str(d))
self.assertEquals(d['submission_id'], _mock_service.cnt)
self.assertEquals(d['submission_id'], self.mock_service.cnt)