def test_get_discussion_id_map_from_cache_without_access(self): user = UserFactory.create() metadata = utils.get_cached_discussion_id_map(self.course, ["private_discussion_id"], self.user) self.assertEqual(metadata["private_discussion_id"]["title"], "Chapter 3 / Beta Testing") metadata = utils.get_cached_discussion_id_map(self.course, ["private_discussion_id"], user) self.assertEqual(metadata, {})
def test_get_discussion_id_map_from_cache_without_access(self): user = UserFactory.create() metadata = utils.get_cached_discussion_id_map(self.course, 'private_discussion_id', self.user) self.assertEqual(metadata['private_discussion_id']['title'], 'Chapter 3 / Beta Testing') metadata = utils.get_cached_discussion_id_map(self.course, 'private_discussion_id', user) self.assertEqual(metadata, {})
def test_get_discussion_id_map_from_cache_without_access(self): user = UserFactory.create() metadata = utils.get_cached_discussion_id_map( self.course, ['private_discussion_id'], self.user) self.assertEqual(metadata['private_discussion_id']['title'], 'Chapter 3 / Beta Testing') metadata = utils.get_cached_discussion_id_map( self.course, ['private_discussion_id'], user) self.assertEqual(metadata, {})
def track_forum_event(request, event_name, course, obj, data, id_map=None): """ Send out an analytics event when a forum event happens. Works for threads, responses to threads, and comments on those responses. """ user = request.user data['id'] = obj.id commentable_id = data['commentable_id'] team = get_team(commentable_id) if team is not None: data.update(team_id=team.team_id) if id_map is None: id_map = get_cached_discussion_id_map(course, [commentable_id], user) if commentable_id in id_map: data['category_name'] = id_map[commentable_id]["title"] data['category_id'] = commentable_id data['url'] = request.META.get('HTTP_REFERER', '') data['user_forums_roles'] = [ role.name for role in user.roles.filter(course_id=course.id) ] data['user_course_roles'] = [ role.role for role in user.courseaccessrole_set.filter(course_id=course.id) ] eventtracking.tracker.emit(event_name, data)
def track_forum_event(request, event_name, course, obj, data, id_map=None): """ Send out an analytics event when a forum event happens. Works for threads, responses to threads, and comments on those responses. """ user = request.user data['id'] = obj.id commentable_id = data['commentable_id'] if id_map is None: id_map = get_cached_discussion_id_map(course, [commentable_id], user) if commentable_id in id_map: data['category_name'] = id_map[commentable_id]["title"] data['category_id'] = commentable_id if len(obj.body) > TRACKING_MAX_FORUM_BODY: data['truncated'] = True else: data['truncated'] = False data['body'] = obj.body[:TRACKING_MAX_FORUM_BODY] data['url'] = request.META.get('HTTP_REFERER', '') data['user_forums_roles'] = [ role.name for role in user.roles.filter(course_id=course.id) ] data['user_course_roles'] = [ role.role for role in user.courseaccessrole_set.filter(course_id=course.id) ] tracker.emit(event_name, data)
def track_forum_event(request, event_name, course, obj, data, id_map=None): """ Send out an analytics event when a forum event happens. Works for threads, responses to threads, and comments on those responses. """ user = request.user data['id'] = obj.id commentable_id = data['commentable_id'] team = get_team(commentable_id) if team is not None: data.update(team_id=team.team_id) if id_map is None: id_map = get_cached_discussion_id_map(course, [commentable_id], user) if commentable_id in id_map: data['category_name'] = id_map[commentable_id]["title"] data['category_id'] = commentable_id data['url'] = request.META.get('HTTP_REFERER', '') data['user_forums_roles'] = [ role.name for role in user.roles.filter(course_id=course.id) ] data['user_course_roles'] = [ role.role for role in user.courseaccessrole_set.filter(course_id=course.id) ] tracker.emit(event_name, data)
def verify_discussion_metadata(self): """Retrieves the metadata for self.discussion and verifies that it is correct""" metadata = utils.get_cached_discussion_id_map(self.course, 'test_discussion_id', self.user) metadata = metadata[self.discussion.discussion_id] self.assertEqual(metadata['location'], self.discussion.location) self.assertEqual(metadata['title'], 'Chapter / Discussion 1')
def verify_discussion_metadata(self): """Retrieves the metadata for self.discussion and self.discussion2 and verifies that it is correct""" metadata = utils.get_cached_discussion_id_map( self.course, ["test_discussion_id", "test_discussion_id_2"], self.user ) discussion1 = metadata[self.discussion.discussion_id] discussion2 = metadata[self.discussion2.discussion_id] self.assertEqual(discussion1["location"], self.discussion.location) self.assertEqual(discussion1["title"], "Chapter / Discussion 1") self.assertEqual(discussion2["location"], self.discussion2.location) self.assertEqual(discussion2["title"], "Chapter 2 / Discussion 2")
def verify_discussion_metadata(self): """Retrieves the metadata for self.discussion and self.discussion2 and verifies that it is correct""" metadata = utils.get_cached_discussion_id_map( self.course, ['test_discussion_id', 'test_discussion_id_2'], self.user ) discussion1 = metadata[self.discussion.discussion_id] discussion2 = metadata[self.discussion2.discussion_id] self.assertEqual(discussion1['location'], self.discussion.location) self.assertEqual(discussion1['title'], 'Chapter / Discussion 1') self.assertEqual(discussion2['location'], self.discussion2.location) self.assertEqual(discussion2['title'], 'Chapter 2 / Discussion 2')
def test_get_bad_discussion_id(self): metadata = utils.get_cached_discussion_id_map(self.course, 'bad_discussion_id', self.user) self.assertEqual(metadata, {})
def test_get_missing_discussion_id_map_from_cache(self): metadata = utils.get_cached_discussion_id_map(self.course, 'bogus_id', self.user) self.assertEqual(metadata, {})