From e1ec4eec71061646771af5a5754487c7300cfa30 Mon Sep 17 00:00:00 2001 From: Diana Huang <dkh@edx.org> Date: Mon, 7 Jan 2013 14:46:32 -0500 Subject: [PATCH] Get tests to pass by creating a mock peer grading service --- .../peer_grading_service.py | 25 ++++++++++++++++++- lms/djangoapps/open_ended_grading/tests.py | 9 +++++-- lms/djangoapps/open_ended_grading/views.py | 8 +++++- lms/envs/common.py | 2 ++ lms/envs/test.py | 1 + 5 files changed, 41 insertions(+), 4 deletions(-) diff --git a/lms/djangoapps/open_ended_grading/peer_grading_service.py b/lms/djangoapps/open_ended_grading/peer_grading_service.py index 6b35f55f011..37611df4f9d 100644 --- a/lms/djangoapps/open_ended_grading/peer_grading_service.py +++ b/lms/djangoapps/open_ended_grading/peer_grading_service.py @@ -15,6 +15,26 @@ from xmodule.course_module import CourseDescriptor log = logging.getLogger(__name__) +class MockPeerGradingService(object): + # TODO: make this return real results + def get_next_submission(self, problem_location, grader_id): + return {'success': true} + + def save_grade(self, location, grader_id, submission_id, score, feedback, submission_key): + return {'success': true} + + def is_student_calibrated(self, problem_location, grader_id): + return {'success': true} + + def show_calibration_essay(self, problem_location, grader_id): + return {'success': true} + + def save_calibration_essay(self, problem_location, grader_id, calibration_essay_id, submission_key, score, feedback): + return {'success': true} + + def get_problem_list(self, course_id, grader_id): + return {'success': true} + class PeerGradingService(GradingService): """ Interface with the grading controller for peer grading @@ -78,7 +98,10 @@ def peer_grading_service(): if _service is not None: return _service - _service = PeerGradingService(settings.PEER_GRADING_INTERFACE) + if settings.MOCK_PEER_GRADING: + _service = MockPeerGradingService() + else: + _service = PeerGradingService(settings.PEER_GRADING_INTERFACE) return _service diff --git a/lms/djangoapps/open_ended_grading/tests.py b/lms/djangoapps/open_ended_grading/tests.py index 06364527790..30a58f6ee80 100644 --- a/lms/djangoapps/open_ended_grading/tests.py +++ b/lms/djangoapps/open_ended_grading/tests.py @@ -6,7 +6,7 @@ Replace this with more appropriate tests for your application. """ from django.test import TestCase -from instructor import staff_grading_service +from open_ended_grading import staff_grading_service from django.core.urlresolvers import reverse from django.contrib.auth.models import Group @@ -14,6 +14,11 @@ from courseware.access import _course_staff_group_name 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 +import json + +from override_settings import override_settings _mock_service = staff_grading_service.MockStaffGradingService() @@ -45,7 +50,7 @@ class TestStaffGradingService(ct.PageLoader): make_instructor(self.toy) - self.mock_service = staff_grading_service.grading_service() + self.mock_service = staff_grading_service.staff_grading_service() self.logout() diff --git a/lms/djangoapps/open_ended_grading/views.py b/lms/djangoapps/open_ended_grading/views.py index 1026888987b..887fe82aecf 100644 --- a/lms/djangoapps/open_ended_grading/views.py +++ b/lms/djangoapps/open_ended_grading/views.py @@ -28,6 +28,7 @@ from xmodule.modulestore.exceptions import InvalidLocationError, ItemNotFoundErr from xmodule.modulestore.search import path_to_location from peer_grading_service import PeerGradingService +from peer_grading_service import MockPeerGradingService from grading_service import GradingServiceError import json import track.views @@ -38,7 +39,10 @@ from .staff_grading import StaffGrading log = logging.getLogger(__name__) template_imports = {'urllib': urllib} -peer_gs = PeerGradingService(settings.PEER_GRADING_INTERFACE) +if settings.MOCK_PEER_GRADING: + peer_gs = MockPeerGradingService() +else: + peer_gs = PeerGradingService(settings.PEER_GRADING_INTERFACE) @cache_control(no_cache=True, no_store=True, must_revalidate=True) def staff_grading(request, course_id): @@ -62,6 +66,7 @@ def staff_grading(request, course_id): 'staff_access': True, }) +@cache_control(no_cache=True, no_store=True, must_revalidate=True) def peer_grading(request, course_id): ''' Show a peer grading interface @@ -104,6 +109,7 @@ def peer_grading(request, course_id): 'staff_access': False, }) +@cache_control(no_cache=True, no_store=True, must_revalidate=True) def peer_grading_problem(request, course_id): ''' Show individual problem interface diff --git a/lms/envs/common.py b/lms/envs/common.py index 3b83b708aa3..2354975cf04 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -333,6 +333,8 @@ STAFF_GRADING_INTERFACE = None # Used for testing, debugging MOCK_STAFF_GRADING = False +################################# Peer grading config ##################### +PEER_GRADING_INTERFACE = None ################################# Jasmine ################################### JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee' diff --git a/lms/envs/test.py b/lms/envs/test.py index c72c8b98bf1..e9e4a43c6f7 100644 --- a/lms/envs/test.py +++ b/lms/envs/test.py @@ -62,6 +62,7 @@ XQUEUE_WAITTIME_BETWEEN_REQUESTS = 5 # seconds # Don't rely on a real staff grading backend MOCK_STAFF_GRADING = True +MOCK_PEER_GRADING = True # TODO (cpennington): We need to figure out how envs/test.py can inject things # into common.py so that we don't have to repeat this sort of thing -- GitLab