def test_get_course_list_with_invalid_course_location(self, store): """ Test getting courses with invalid course location (course deleted from modulestore). """ with self.store.default_store(store): course_key = self.store.make_course_key('Org', 'Course', 'Run') self._create_course_with_access_groups(course_key, self.user, store) # get courses through iterating all courses courses_iter, __ = _accessible_courses_iter_for_tests(self.request) courses_list = list(courses_iter) self.assertEqual(len(courses_list), 1) courses_summary_iter, __ = _accessible_courses_summary_iter( self.request) courses_summary_list = list(courses_summary_iter) # Verify fetched accessible courses list is a list of CourseSummery instances and only one course # is returned self.assertTrue( all( isinstance(course, CourseSummary) for course in courses_summary_list)) self.assertEqual(len(courses_summary_list), 1) # get courses by reversing group name formats courses_list_by_groups, __ = _accessible_courses_list_from_groups( self.request) self.assertEqual(len(courses_list_by_groups), 1) course_keys_in_course_list = [course.id for course in courses_list] course_keys_in_courses_list_by_groups = [ course.id for course in courses_list_by_groups ] # check course lists have same courses self.assertEqual(course_keys_in_course_list, course_keys_in_courses_list_by_groups) # now delete this course and re-add user to instructor group of this course delete_course(course_key, self.user.id) CourseInstructorRole(course_key).add_users(self.user) # Get courses through iterating all courses courses_iter, __ = _accessible_courses_iter_for_tests(self.request) # Get course summaries by iterating all courses courses_summary_iter, __ = _accessible_courses_summary_iter( self.request) # Get courses by reversing group name formats courses_list_by_groups, __ = _accessible_courses_list_from_groups( self.request) # Test that course list returns no course self.assertEqual([ len(list(courses_iter)), len(courses_list_by_groups), len(list(courses_summary_iter)) ], [0, 0, 0])
def test_get_course_list_with_invalid_course_location(self, store): """ Test getting courses with invalid course location (course deleted from modulestore). """ with self.store.default_store(store): course_key = self.store.make_course_key('Org', 'Course', 'Run') self._create_course_with_access_groups(course_key, self.user, store) # get courses through iterating all courses courses_iter, __ = _accessible_courses_iter_for_tests(self.request) courses_list = list(courses_iter) self.assertEqual(len(courses_list), 1) courses_summary_iter, __ = _accessible_courses_summary_iter(self.request) courses_summary_list = list(courses_summary_iter) # Verify fetched accessible courses list is a list of CourseSummery instances and only one course # is returned self.assertTrue(all(isinstance(course, CourseSummary) for course in courses_summary_list)) self.assertEqual(len(courses_summary_list), 1) # get courses by reversing group name formats courses_list_by_groups, __ = _accessible_courses_list_from_groups(self.request) self.assertEqual(len(courses_list_by_groups), 1) course_keys_in_course_list = [course.id for course in courses_list] course_keys_in_courses_list_by_groups = [course.id for course in courses_list_by_groups] # check course lists have same courses self.assertEqual(course_keys_in_course_list, course_keys_in_courses_list_by_groups) # now delete this course and re-add user to instructor group of this course delete_course(course_key, self.user.id) CourseInstructorRole(course_key).add_users(self.user) # Get courses through iterating all courses courses_iter, __ = _accessible_courses_iter_for_tests(self.request) # Get course summaries by iterating all courses courses_summary_iter, __ = _accessible_courses_summary_iter(self.request) # Get courses by reversing group name formats courses_list_by_groups, __ = _accessible_courses_list_from_groups(self.request) # Test that course list returns no course self.assertEqual( [len(list(courses_iter)), len(courses_list_by_groups), len(list(courses_summary_iter))], [0, 0, 0] )
def test_get_course_list(self): """ Test getting courses with new access group format e.g. 'instructor_edx.course.run' """ course_location = self.store.make_course_key('Org1', 'Course1', 'Run1') self._create_course_with_access_groups(course_location, self.user) # get courses through iterating all courses courses_iter, __ = _accessible_courses_iter_for_tests(self.request) courses_list = list(courses_iter) self.assertEqual(len(courses_list), 1) courses_summary_list, __ = _accessible_courses_summary_iter( self.request) self.assertEqual(len(list(courses_summary_list)), 1) # get courses by reversing group name formats courses_list_by_groups, __ = _accessible_courses_list_from_groups( self.request) self.assertEqual(len(courses_list_by_groups), 1) # check both course lists have same courses course_keys_in_course_list = [course.id for course in courses_list] course_keys_in_courses_list_by_groups = [ course.id for course in courses_list_by_groups ] self.assertEqual(course_keys_in_course_list, course_keys_in_courses_list_by_groups)
def test_staff_course_listing(self, default_store, mongo_calls): """ Create courses and verify they take certain amount of mongo calls to call get_courses_accessible_to_user. Also verify that fetch accessible courses list for staff user returns CourseSummary instances. """ # Assign & verify staff role to the user GlobalStaff().add_users(self.user) self.assertTrue(GlobalStaff().has_user(self.user)) with self.store.default_store(default_store): # Create few courses for num in range(TOTAL_COURSES_COUNT): course_location = self.store.make_course_key( 'Org', 'CreatedCourse' + str(num), 'Run') self._create_course_with_access_groups(course_location, self.user, default_store) # Fetch accessible courses list & verify their count courses_list_by_staff, __ = get_courses_accessible_to_user( self.request) self.assertEqual(len(list(courses_list_by_staff)), TOTAL_COURSES_COUNT) # Verify fetched accessible courses list is a list of CourseSummery instances self.assertTrue( all( isinstance(course, CourseSummary) for course in courses_list_by_staff)) # Now count the db queries for staff with check_mongo_calls(mongo_calls): list(_accessible_courses_summary_iter(self.request))
def test_staff_course_listing(self, default_store, mongo_calls): """ Create courses and verify they take certain amount of mongo calls to call get_courses_accessible_to_user. Also verify that fetch accessible courses list for staff user returns CourseSummary instances. """ # Assign & verify staff role to the user GlobalStaff().add_users(self.user) self.assertTrue(GlobalStaff().has_user(self.user)) with self.store.default_store(default_store): # Create few courses for num in xrange(TOTAL_COURSES_COUNT): course_location = self.store.make_course_key('Org', 'CreatedCourse' + str(num), 'Run') self._create_course_with_access_groups(course_location, self.user, default_store) # Fetch accessible courses list & verify their count courses_list_by_staff, __ = get_courses_accessible_to_user(self.request) self.assertEqual(len(list(courses_list_by_staff)), TOTAL_COURSES_COUNT) # Verify fetched accessible courses list is a list of CourseSummery instances self.assertTrue(all(isinstance(course, CourseSummary) for course in courses_list_by_staff)) # Now count the db queries for staff with check_mongo_calls(mongo_calls): list(_accessible_courses_summary_iter(self.request))
def test_get_course_list(self): """ Test getting courses with new access group format e.g. 'instructor_edx.course.run' """ course_location = self.store.make_course_key('Org1', 'Course1', 'Run1') self._create_course_with_access_groups(course_location, self.user) # get courses through iterating all courses courses_iter, __ = _accessible_courses_iter(self.request) courses_list = list(courses_iter) self.assertEqual(len(courses_list), 1) courses_summary_list, __ = _accessible_courses_summary_iter(self.request) self.assertEqual(len(list(courses_summary_list)), 1) # get courses by reversing group name formats courses_list_by_groups, __ = _accessible_courses_list_from_groups(self.request) self.assertEqual(len(courses_list_by_groups), 1) # check both course lists have same courses self.assertEqual(courses_list, courses_list_by_groups)