Commit dacdbae1 by Toby Lawrence

Fix up some broken tests.

We added the ability here to check if a role has a user in with the ability to refresh the role cache before checking.  Since some tests will make inline requests, which in turn put a user into a new role, we have to refresh afterwards otherwise we won't see that new role in place.  Since we don't want to automatically refresh ever, we just added a way to request it, since we know in this test that we're doing something, effectively, out-of-band, which necessitates it.
parent 9fe2de8a
...@@ -233,7 +233,7 @@ class TestCourseIndex(CourseTestCase): ...@@ -233,7 +233,7 @@ class TestCourseIndex(CourseTestCase):
# delete nofications that are dismissed # delete nofications that are dismissed
CourseRerunState.objects.get(id=rerun_state.id) CourseRerunState.objects.get(id=rerun_state.id)
self.assertFalse(has_course_author_access(user2, rerun_course_key)) self.assertTrue(has_course_author_access(user2, rerun_course_key))
def assert_correct_json_response(self, json_response): def assert_correct_json_response(self, json_response):
""" """
......
...@@ -65,7 +65,7 @@ class AccessRole(object): ...@@ -65,7 +65,7 @@ class AccessRole(object):
__metaclass__ = ABCMeta __metaclass__ = ABCMeta
@abstractmethod @abstractmethod
def has_user(self, user): def has_user(self, user, refresh=True):
""" """
Return whether the supplied django user has access to this role. Return whether the supplied django user has access to this role.
""" """
...@@ -133,7 +133,7 @@ class RoleBase(AccessRole): ...@@ -133,7 +133,7 @@ class RoleBase(AccessRole):
self.course_key = course_key self.course_key = course_key
self._role_name = role_name self._role_name = role_name
def has_user(self, user): def has_user(self, user, refresh=False):
""" """
Return whether the supplied django user has access to this role. Return whether the supplied django user has access to this role.
""" """
...@@ -141,7 +141,7 @@ class RoleBase(AccessRole): ...@@ -141,7 +141,7 @@ class RoleBase(AccessRole):
return False return False
# pylint: disable=protected-access # pylint: disable=protected-access
if not hasattr(user, '_roles'): if not hasattr(user, '_roles') or refresh:
# Cache a list of tuples identifying the particular roles that a user has # 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 # Stored as tuples, rather than django models, to make it cheaper to construct objects for comparison
user._roles = RoleCache(user) user._roles = RoleCache(user)
...@@ -160,7 +160,6 @@ class RoleBase(AccessRole): ...@@ -160,7 +160,6 @@ class RoleBase(AccessRole):
entry = CourseAccessRole(user=user, role=self._role_name, course_id=self.course_key, org=self.org) entry = CourseAccessRole(user=user, role=self._role_name, course_id=self.course_key, org=self.org)
entry.save() entry.save()
if hasattr(user, '_roles'): if hasattr(user, '_roles'):
# del user._roles
user._roles.add_role(entry) user._roles.add_role(entry)
def remove_users(self, *users): def remove_users(self, *users):
......
...@@ -220,7 +220,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase): ...@@ -220,7 +220,7 @@ class TestCoachDashboard(CcxTestCase, LoginEnrollmentTestCase):
# assert ccx creator has role=ccx_coach # assert ccx creator has role=ccx_coach
role = CourseCcxCoachRole(course_key) role = CourseCcxCoachRole(course_key)
self.assertTrue(role.has_user(self.coach)) self.assertTrue(role.has_user(self.coach, refresh=True))
def test_get_date(self): def test_get_date(self):
""" """
...@@ -825,7 +825,7 @@ class TestCCXGrades(SharedModuleStoreTestCase, LoginEnrollmentTestCase): ...@@ -825,7 +825,7 @@ class TestCCXGrades(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
headers = rows[0] headers = rows[0]
# picking first student records # picking first student records
data = dict(zip(headers.strip().split(','), rows[1].strip().split(','))) data = dict(zip(headers.strip().split(','), rows[2].strip().split(',')))
self.assertNotIn('HW 04', data) self.assertNotIn('HW 04', data)
self.assertEqual(data['HW 01'], '0.75') self.assertEqual(data['HW 01'], '0.75')
self.assertEqual(data['HW 02'], '0.5') self.assertEqual(data['HW 02'], '0.5')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment