def test_get_all_threads_subscribed_to(self): self.assertEqual( subscription_services.get_all_threads_subscribed_to( USER_ID), []) subscription_services.subscribe_to_thread(USER_ID, FEEDBACK_THREAD_ID) self.assertEqual( subscription_services.get_all_threads_subscribed_to(USER_ID), [FEEDBACK_THREAD_ID]) subscription_services.subscribe_to_thread(USER_ID, FEEDBACK_THREAD_ID_2) self.assertEqual( subscription_services.get_all_threads_subscribed_to(USER_ID), [FEEDBACK_THREAD_ID, FEEDBACK_THREAD_ID_2])
def post(self): """Handles POST requests.""" if len(self.normalized_payload.get('paginated_threads_list')) == 0: full_thread_ids = ( subscription_services.get_all_threads_subscribed_to( self.user_id)) paginated_threads_list = [ full_thread_ids[index:index + 100] for index in range(0, len(full_thread_ids), 100) ] else: paginated_threads_list = self.normalized_payload.get( 'paginated_threads_list') if (len(paginated_threads_list) > 0 and len(paginated_threads_list[0]) > 0): thread_summaries, number_of_unread_threads = ( feedback_services.get_exp_thread_summaries( self.user_id, paginated_threads_list[0])) else: thread_summaries, number_of_unread_threads = [], 0 self.values.update({ 'thread_summaries': [s.to_dict() for s in thread_summaries], 'number_of_unread_threads': number_of_unread_threads, 'paginated_threads_list': paginated_threads_list[1:] }) self.render_json(self.values)
def test_message_count(self): """Test if the job returns the correct message count.""" feedback_services.create_thread( self.EXP_ID_1, self.EXPECTED_THREAD_DICT['state_name'], self.user_id, self.EXPECTED_THREAD_DICT['subject'], 'not used here') feedback_services.create_thread( self.EXP_ID_2, self.EXPECTED_THREAD_DICT['state_name'], self.user_id, self.EXPECTED_THREAD_DICT['subject'], 'not used here') thread_ids = subscription_services.get_all_threads_subscribed_to( self.user_id) self._run_one_off_job() thread_summaries, _ = feedback_services.get_thread_summaries( self.user_id, thread_ids) # Check that the first message has only one message. self.assertEqual(thread_summaries[0]['total_message_count'], 1) # Check that the second message has only one message. self.assertEqual(thread_summaries[1]['total_message_count'], 1) feedback_services.create_message(self.EXP_ID_1, thread_ids[0].split('.')[1], self.user_id, None, None, 'editor message') self._run_one_off_job() thread_summaries, _ = feedback_services.get_thread_summaries( self.user_id, thread_ids) # Check that the first message has two messages. self.assertEqual(thread_summaries[0]['total_message_count'], 2) # Get the first message so that we can delete it and check the error # case. first_message_model = (feedback_models.FeedbackMessageModel.get( self.EXP_ID_1, thread_ids[0].split('.')[1], 0)) first_message_model.delete() output = self._run_one_off_job() # Check if the quantities have the correct values. self.assertEqual(output[0][1]['message_count'], 1) self.assertEqual(output[0][1]['next_message_id'], 2)
def get(self): """Handles GET requests.""" full_thread_ids = subscription_services.get_all_threads_subscribed_to( self.user_id) if len(full_thread_ids) > 0: thread_summaries, number_of_unread_threads = ( feedback_services.get_exp_thread_summaries( self.user_id, full_thread_ids)) else: thread_summaries, number_of_unread_threads = [], 0 self.values.update({ 'thread_summaries': [s.to_dict() for s in thread_summaries], 'number_of_unread_threads': number_of_unread_threads, }) self.render_json(self.values)
def get(self): """Handles GET requests.""" ( learner_progress, number_of_nonexistent_activities, completed_to_incomplete_collections) = ( learner_progress_services.get_activity_progress(self.user_id)) completed_exp_summary_dicts = ( summary_services.get_displayable_exp_summary_dicts( learner_progress.completed_exp_summaries)) incomplete_exp_summary_dicts = ( summary_services.get_displayable_exp_summary_dicts( learner_progress.incomplete_exp_summaries)) completed_collection_summary_dicts = ( learner_progress_services.get_collection_summary_dicts( learner_progress.completed_collection_summaries)) incomplete_collection_summary_dicts = ( learner_progress_services.get_collection_summary_dicts( learner_progress.incomplete_collection_summaries)) exploration_playlist_summary_dicts = ( summary_services.get_displayable_exp_summary_dicts( learner_progress.exploration_playlist_summaries)) collection_playlist_summary_dicts = ( learner_progress_services.get_collection_summary_dicts( learner_progress.collection_playlist_summaries)) full_thread_ids = subscription_services.get_all_threads_subscribed_to( self.user_id) if len(full_thread_ids) > 0: thread_summaries, number_of_unread_threads = ( feedback_services.get_exp_thread_summaries( self.user_id, full_thread_ids)) else: thread_summaries, number_of_unread_threads = [], 0 creators_subscribed_to = ( subscription_services.get_all_creators_subscribed_to(self.user_id)) creators_settings = user_services.get_users_settings( creators_subscribed_to) subscription_list = [] for index, creator_settings in enumerate(creators_settings): subscription_summary = { 'creator_picture_data_url': ( creator_settings.profile_picture_data_url), 'creator_username': creator_settings.username, 'creator_impact': ( user_services.get_user_impact_score( creators_subscribed_to[index])) } subscription_list.append(subscription_summary) self.values.update({ 'completed_explorations_list': completed_exp_summary_dicts, 'completed_collections_list': completed_collection_summary_dicts, 'incomplete_explorations_list': incomplete_exp_summary_dicts, 'incomplete_collections_list': incomplete_collection_summary_dicts, 'exploration_playlist': exploration_playlist_summary_dicts, 'collection_playlist': collection_playlist_summary_dicts, 'number_of_nonexistent_activities': ( number_of_nonexistent_activities), 'completed_to_incomplete_collections': ( completed_to_incomplete_collections), 'thread_summaries': [s.to_dict() for s in thread_summaries], 'number_of_unread_threads': number_of_unread_threads, 'subscription_list': subscription_list }) self.render_json(self.values)
def test_get_thread_summaries(self): feedback_services.create_thread( 'exploration', self.EXP_ID_1, self.user_id, self.EXPECTED_THREAD_DICT['subject'], 'not used here') feedback_services.create_thread( 'exploration', self.EXP_ID_2, self.user_id, self.EXPECTED_THREAD_DICT['subject'], 'not used here') # The message count parameter is missing for this thread. The thread # summaries function should account for this and function # flawlessly. thread_3 = feedback_models.GeneralFeedbackThreadModel( id='exploration.' + self.EXP_ID_3 + '.' + self.THREAD_ID, entity_type='exploration', entity_id=self.EXP_ID_3, original_author_id=self.user_id, subject='Feedback', status=feedback_models.STATUS_CHOICES_OPEN, has_suggestion=False) thread_3.put() feedback_services.create_message( 'exploration.' + self.EXP_ID_3 + '.' + self.THREAD_ID, self.user_id, None, None, 'not used here') thread_ids = subscription_services.get_all_threads_subscribed_to( self.user_id) thread_ids.append('exploration.' + self.EXP_ID_3 + '.' + self.THREAD_ID) thread_summaries, number_of_unread_threads = ( feedback_services.get_thread_summaries( self.user_id, thread_ids)) exploration_titles = ( ['Bridges in England', 'Sillat Suomi', 'Leaning tower of Pisa']) # Fetch the threads. threads = [] threads.append(feedback_services.get_thread(thread_ids[0])) threads.append(feedback_services.get_thread(thread_ids[1])) threads.append(feedback_services.get_thread( 'exploration.' + self.EXP_ID_3 + '.' + self.THREAD_ID)) # Check if the number of unread messages match. self.assertEqual(number_of_unread_threads, 0) for index, thread in enumerate(threads): thread_summary = { 'status': thread.status, 'original_author_id': thread.original_author_id, 'last_updated': thread_summaries[index]['last_updated'], 'last_message_text': 'not used here', 'total_message_count': 1, 'last_message_read': True, 'second_last_message_read': None, 'author_last_message': user_services.get_username( self.user_id), 'author_second_last_message': None, 'exploration_title': exploration_titles[index] } # Check if the summaries match. self.assertDictContainsSubset( thread_summary, thread_summaries[index]) feedback_services.create_message( threads[0].id, self.owner_id, None, None, 'editor message') _, number_of_unread_threads = ( feedback_services.get_thread_summaries(self.user_id, thread_ids)) # Check if the number of unread messages is equal to 1. self.assertEqual(number_of_unread_threads, 1)