Пример #1
0
    def test_get_total_open_threads_for_multiple_explorations(self):
        feedback_services.create_thread(
            self.EXP_ID_1, self.EXPECTED_THREAD_DICT['state_name'], None,
            self.EXPECTED_THREAD_DICT['subject'], 'not used here')
        feedback_services.create_thread(
            self.EXP_ID_2, self.EXPECTED_THREAD_DICT['state_name'], None,
            self.EXPECTED_THREAD_DICT['subject'], 'not used here')

        threads_exp_1 = feedback_services.get_all_threads(self.EXP_ID_1, False)
        self.assertEqual(1, len(threads_exp_1))
        threads_exp_2 = feedback_services.get_all_threads(self.EXP_ID_2, False)
        self.assertEqual(1, len(threads_exp_2))

        def _close_thread(exp_id, thread_id):
            thread = (feedback_models.FeedbackThreadModel.
                      get_by_exp_and_thread_id(exp_id, thread_id))
            thread.status = feedback_models.STATUS_CHOICES_FIXED
            thread.put()

        _close_thread(self.EXP_ID_1, threads_exp_1[0].get_thread_id())
        self.assertEqual(
            len(feedback_services.get_closed_threads(self.EXP_ID_1, False)), 1)
        self._run_computation()

        self.assertEqual(feedback_services.get_total_open_threads(
            feedback_services.get_thread_analytics_multi(
                [self.EXP_ID_1, self.EXP_ID_2])), 1)
Пример #2
0
    def test_get_total_open_threads_for_multiple_explorations(self):
        feedback_services.create_thread(
            'exploration', self.EXP_ID_1, None,
            self.EXPECTED_THREAD_DICT['subject'], 'not used here')
        feedback_services.create_thread(
            'exploration', self.EXP_ID_2, None,
            self.EXPECTED_THREAD_DICT['subject'], 'not used here')

        threads_exp_1 = feedback_services.get_all_threads(
            'exploration', self.EXP_ID_1, False)
        self.assertEqual(1, len(threads_exp_1))
        threads_exp_2 = feedback_services.get_all_threads(
            'exploration', self.EXP_ID_2, False)
        self.assertEqual(1, len(threads_exp_2))

        def _close_thread(thread_id):
            """Closes the thread corresponding to its thread id by updating its
            status.
            """
            thread = feedback_models.GeneralFeedbackThreadModel.get_by_id(
                thread_id)
            thread.status = feedback_models.STATUS_CHOICES_FIXED
            thread.put()

        _close_thread(threads_exp_1[0].id)

        self.assertEqual(len(feedback_services.get_closed_threads(
            'exploration', self.EXP_ID_1, False)), 1)
        self._run_computation()

        self.assertEqual(feedback_services.get_total_open_threads(
            feedback_services.get_thread_analytics_multi(
                [self.EXP_ID_1, self.EXP_ID_2])), 1)
Пример #3
0
 def test_get_closed_threads_without_suggestions(self):
     with self.swap(feedback_models.FeedbackThreadModel, 'get_threads',
                    self._get_threads):
         with self.swap(utils, 'get_time_in_millisecs',
                        self._get_milliseconds):
             threads = feedback_services.get_closed_threads(
                 self.EXP_ID1, False)
     self.assertEqual(len(threads), 1)
     self.assertEqual(threads[0]['thread_id'], self.THREAD_ID4)
Пример #4
0
    def get(self, exploration_id):
        threads = None
        list_type = self.request.get('list_type')
        has_suggestion = self._string_to_bool(
            self.request.get('has_suggestion'))
        if has_suggestion is None:
            raise self.InvalidInputException(
                'Invalid value for has_suggestion.')
        if list_type == self._LIST_TYPE_OPEN:
            threads = feedback_services.get_open_threads(
                exploration_id, has_suggestion)
        elif list_type == self._LIST_TYPE_CLOSED:
            threads = feedback_services.get_closed_threads(
                exploration_id, has_suggestion)
        elif list_type == self._LIST_TYPE_ALL:
            threads = feedback_services.get_all_threads(
                exploration_id, has_suggestion)
        else:
            raise self.InvalidInputException('Invalid list type.')

        self.values.update({'threads': [t.to_dict() for t in threads]})
        self.render_json(self.values)
Пример #5
0
 def test_get_closed_threads_without_suggestions(self):
     threads = feedback_services.get_closed_threads(self.EXP_ID1, False)
     self.assertEqual(len(threads), 1)
     self.assertEqual(threads[0].id, self.EXP_ID1 + '.' + self.THREAD_ID4)
Пример #6
0
 def test_get_closed_threads_with_suggestions(self):
     threads = feedback_services.get_closed_threads(self.EXP_ID1, True)
     self.assertEqual(len(threads), 2)
     self.assertEqual(threads[0].id, self.EXP_ID1 + '.' + self.THREAD_ID2)
     self.assertEqual(threads[1].id, self.EXP_ID1 + '.' + self.THREAD_ID3)