Exemplo n.º 1
0
    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])
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)