diff --git a/cms/djangoapps/contentstore/views/tests/test_course_index.py b/cms/djangoapps/contentstore/views/tests/test_course_index.py index db96af9f11..c043f90da8 100644 --- a/cms/djangoapps/contentstore/views/tests/test_course_index.py +++ b/cms/djangoapps/contentstore/views/tests/test_course_index.py @@ -233,7 +233,7 @@ class TestCourseIndex(CourseTestCase): # delete nofications that are dismissed CourseRerunState.objects.get(id=rerun_state.id) - self.assertTrue(has_course_author_access(user2, rerun_course_key)) + self.assertFalse(has_course_author_access(user2, rerun_course_key)) def assert_correct_json_response(self, json_response): """ diff --git a/common/djangoapps/student/roles.py b/common/djangoapps/student/roles.py index c83d484408..c8b8796420 100644 --- a/common/djangoapps/student/roles.py +++ b/common/djangoapps/student/roles.py @@ -54,10 +54,6 @@ class RoleCache(object): for access_role in self._roles ) - def add_role(self, role): - """Adds a role to the cache.""" - self._roles.add(role) - class AccessRole(object): """ @@ -66,7 +62,7 @@ class AccessRole(object): __metaclass__ = ABCMeta @abstractmethod - def has_user(self, user, refresh=True): + def has_user(self, user): """ Return whether the supplied django user has access to this role. """ @@ -134,7 +130,7 @@ class RoleBase(AccessRole): self.course_key = course_key self._role_name = role_name - def has_user(self, user, refresh=False): + def has_user(self, user): """ Return whether the supplied django user has access to this role. """ @@ -142,7 +138,7 @@ class RoleBase(AccessRole): return False # pylint: disable=protected-access - if not hasattr(user, '_roles') or refresh: + if not hasattr(user, '_roles'): # Cache a list of tuples identifying the particular roles that a user has # Stored as tuples, rather than django models, to make it cheaper to construct objects for comparison user._roles = RoleCache(user) @@ -161,8 +157,7 @@ class RoleBase(AccessRole): entry = CourseAccessRole(user=user, role=self._role_name, course_id=self.course_key, org=self.org) entry.save() if hasattr(user, '_roles'): - # pylint: disable=protected-access - user._roles.add_role(entry) + del user._roles def remove_users(self, *users): """ diff --git a/lms/djangoapps/ccx/tests/test_views.py b/lms/djangoapps/ccx/tests/test_views.py index e40e9df734..c69dcaab95 100644 --- a/lms/djangoapps/ccx/tests/test_views.py +++ b/lms/djangoapps/ccx/tests/test_views.py @@ -36,6 +36,7 @@ from student.tests.factories import ( from xmodule.x_module import XModuleMixin from xmodule.modulestore import ModuleStoreEnum +from xmodule.modulestore.django import modulestore from xmodule.modulestore.tests.django_utils import ( ModuleStoreTestCase, SharedModuleStoreTestCase, @@ -219,7 +220,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase): # assert ccx creator has role=ccx_coach role = CourseCcxCoachRole(course_key) - self.assertTrue(role.has_user(self.coach, refresh=True)) + self.assertTrue(role.has_user(self.coach)) @ddt.data("CCX demo 1", "CCX demo 2", "CCX demo 3") def test_create_multiple_ccx(self, ccx_name): @@ -712,28 +713,25 @@ def patched_get_children(self, usage_key_filter=None): @override_settings(FIELD_OVERRIDE_PROVIDERS=( 'ccx.overrides.CustomCoursesForEdxOverrideProvider',)) @patch('xmodule.x_module.XModuleMixin.get_children', patched_get_children, spec=True) -class TestCCXGrades(ModuleStoreTestCase, LoginEnrollmentTestCase): +class TestCCXGrades(SharedModuleStoreTestCase, LoginEnrollmentTestCase): """ Tests for Custom Courses views. """ MODULESTORE = TEST_DATA_SPLIT_MODULESTORE - def setUp(self): - """ - Set up tests - """ - super(TestCCXGrades, self).setUp() - - self._course = CourseFactory.create(enable_ccx=True) + @classmethod + def setUpClass(cls): + super(TestCCXGrades, cls).setUpClass() + cls._course = course = CourseFactory.create(enable_ccx=True) # Create a course outline - self.start = datetime.datetime( + cls.mooc_start = start = datetime.datetime( 2010, 5, 12, 2, 42, tzinfo=pytz.UTC ) chapter = ItemFactory.create( - start=self.start, parent=self._course, category='sequential' + start=start, parent=course, category='sequential' ) - self.sections = [ + cls.sections = sections = [ ItemFactory.create( parent=chapter, category="sequential", @@ -741,7 +739,7 @@ class TestCCXGrades(ModuleStoreTestCase, LoginEnrollmentTestCase): for _ in xrange(4) ] # making problems available at class level for possible future use in tests - self.problems = [ + cls.problems = [ [ ItemFactory.create( parent=section, @@ -749,9 +747,15 @@ class TestCCXGrades(ModuleStoreTestCase, LoginEnrollmentTestCase): data=StringResponseXMLFactory().build_xml(answer='foo'), metadata={'rerandomize': 'always'} ) for _ in xrange(4) - ] for section in self.sections + ] for section in sections ] + def setUp(self): + """ + Set up tests + """ + super(TestCCXGrades, self).setUp() + # Create instructor account self.coach = coach = AdminFactory.create() self.client.login(username=coach.username, password="test") @@ -824,18 +828,13 @@ class TestCCXGrades(ModuleStoreTestCase, LoginEnrollmentTestCase): rows = response.content.strip().split('\r') headers = rows[0] - records = dict() - for i in range(1, len(rows)): - data = dict(zip(headers.strip().split(','), rows[i].strip().split(','))) - records[data['username']] = data - - student_data = records[self.student.username] # pylint: disable=no-member - - self.assertNotIn('HW 04', student_data) - self.assertEqual(student_data['HW 01'], '0.75') - self.assertEqual(student_data['HW 02'], '0.5') - self.assertEqual(student_data['HW 03'], '0.25') - self.assertEqual(student_data['HW Avg'], '0.5') + # picking first student records + data = dict(zip(headers.strip().split(','), rows[1].strip().split(','))) + self.assertNotIn('HW 04', data) + self.assertEqual(data['HW 01'], '0.75') + self.assertEqual(data['HW 02'], '0.5') + self.assertEqual(data['HW 03'], '0.25') + self.assertEqual(data['HW Avg'], '0.5') @patch('courseware.views.render_to_response', intercept_renderer) def test_student_progress(self):