def _get_thread_from_model(thread_model): """Converts the given FeedbackThreadModel to a FeedbackThread object. Args: thread_model: FeedbackThreadModel. Returns: FeedbackThread. The corresponding FeedbackThread domain object. """ if constants.ENABLE_GENERALIZED_FEEDBACK_THREADS: message_model = feedback_models.GeneralFeedbackMessageModel else: message_model = feedback_models.FeedbackMessageModel if thread_model.message_count is None: message_count = message_model.get_message_count(thread_model.id) else: message_count = thread_model.message_count if constants.ENABLE_GENERALIZED_FEEDBACK_THREADS: return feedback_domain.FeedbackThread( thread_model.id, thread_model.entity_type, thread_model.entity_id, None, thread_model.original_author_id, thread_model.status, thread_model.subject, thread_model.summary, thread_model.has_suggestion, message_count, thread_model.created_on, thread_model.last_updated) else: return feedback_domain.FeedbackThread( thread_model.id, None, thread_model.exploration_id, thread_model.state_name, thread_model.original_author_id, thread_model.status, thread_model.subject, thread_model.summary, thread_model.has_suggestion, message_count, thread_model.created_on, thread_model.last_updated)
def test_get_last_two_message_ids(self): fake_date = datetime.datetime(2016, 4, 10, 0, 0, 0, 0) thread_1 = feedback_domain.FeedbackThread(self.THREAD_ID, self.EXP_ID, u'a_state_name', self.viewer_id, u'open', u'a subject', None, False, 5, fake_date, fake_date) last_two_message_ids = thread_1.get_last_two_message_ids() self.assertEqual( last_two_message_ids, [thread_1.get_full_message_id(4), thread_1.get_full_message_id(3)]) # Check what happens in case the thread has only one message. thread_1 = feedback_domain.FeedbackThread(self.THREAD_ID, self.EXP_ID, u'a_state_name', self.viewer_id, u'open', u'a subject', None, False, 1, fake_date, fake_date) last_two_message_ids = thread_1.get_last_two_message_ids() # The second last message should be given an id of -1 as it doesn't # exist. self.assertEqual(last_two_message_ids, [thread_1.get_full_message_id(0), None])
def test_to_dict(self) -> None: fake_date = datetime.datetime(2016, 4, 10, 0, 0, 0, 0) expected_thread_dict: feedback_domain.FeedbackThreadDict = { 'thread_id': self.THREAD_ID, 'status': u'open', 'state_name': u'a_state_name', 'summary': 'test summary', 'original_author_id': self.viewer_id, 'message_count': 1, 'subject': u'a subject', 'last_updated_msecs': utils.get_time_in_millisecs(fake_date), 'last_nonempty_message_text': 'last message', 'last_nonempty_message_author_id': self.viewer_id, } observed_thread = feedback_domain.FeedbackThread( self.THREAD_ID, feconf.ENTITY_TYPE_EXPLORATION, self.EXP_ID, expected_thread_dict['state_name'], self.viewer_id, expected_thread_dict['status'], expected_thread_dict['subject'], expected_thread_dict['summary'], False, 1, fake_date, fake_date, 'last message', self.viewer_id) # Using type ignore[arg-type] here because assertDictEqual method # expects both arguments to be of type Dict[Any, Any]. self.assertDictEqual( expected_thread_dict, observed_thread.to_dict()) # type: ignore[arg-type]
def _get_thread_from_model(thread_model): return feedback_domain.FeedbackThread( thread_model.id, thread_model.exploration_id, thread_model.state_name, thread_model.original_author_id, thread_model.status, thread_model.subject, thread_model.summary, thread_model.has_suggestion, thread_model.created_on, thread_model.last_updated)
def test_get_last_two_message_ids_from_thread_with_only_one_message(self): fake_date = datetime.datetime(2016, 4, 10, 0, 0, 0, 0) thread = feedback_domain.FeedbackThread( self.THREAD_ID, feconf.ENTITY_TYPE_EXPLORATION, self.EXP_ID, u'a_state_name', self.viewer_id, u'open', u'a subject', None, False, 1, # This value decides the number of messages. fake_date, fake_date, 'last message', self.VIEWER_USERNAME) self.assertEqual( thread.get_last_two_message_ids(), ['exp0.thread0.0', None])
def test_get_last_two_message_ids_from_thread_with_many_messages( self ) -> None: fake_date = datetime.datetime(2016, 4, 10, 0, 0, 0, 0) thread = feedback_domain.FeedbackThread( self.THREAD_ID, feconf.ENTITY_TYPE_EXPLORATION, self.EXP_ID, u'a_state_name', self.viewer_id, u'open', u'a subject', # This value of "5" decides the number of messages. 'test summary', False, 5, fake_date, fake_date, 'last message', self.VIEWER_USERNAME) self.assertEqual( thread.get_last_two_message_ids(), ['exp0.thread0.4', 'exp0.thread0.3'])
def _get_thread_from_model(thread_model): """Converts the given FeedbackThreadModel to a FeedbackThread object. Args: thread_model: FeedbackThreadModel. Returns: FeedbackThread. The corresponding FeedbackThread domain object. """ return feedback_domain.FeedbackThread( thread_model.id, thread_model.exploration_id, thread_model.state_name, thread_model.original_author_id, thread_model.status, thread_model.subject, thread_model.summary, thread_model.has_suggestion, thread_model.created_on, thread_model.last_updated)
def test_to_dict(self): fake_date = datetime.datetime(2016, 4, 10, 0, 0, 0, 0) expected_thread_dict = { 'thread_id': self.THREAD_ID, 'status': u'open', 'state_name': u'a_state_name', 'summary': None, 'original_author_username': self.VIEWER_USERNAME, 'subject': u'a subject', 'last_updated': utils.get_time_in_millisecs(fake_date) } observed_thread = feedback_domain.FeedbackThread( self.FULL_THREAD_ID, self.EXP_ID, expected_thread_dict['state_name'], self.viewer_id, expected_thread_dict['status'], expected_thread_dict['subject'], expected_thread_dict['summary'], False, fake_date, fake_date) self.assertDictEqual(expected_thread_dict, observed_thread.to_dict())
def _get_thread_from_model(thread_model): """Converts the given FeedbackThreadModel to a FeedbackThread object. Args: thread_model: FeedbackThreadModel. Returns: FeedbackThread. The corresponding FeedbackThread domain object. """ message_count = ( thread_model.message_count or feedback_models.GeneralFeedbackMessageModel.get_message_count( thread_model.id)) return feedback_domain.FeedbackThread( thread_model.id, thread_model.entity_type, thread_model.entity_id, None, thread_model.original_author_id, thread_model.status, thread_model.subject, thread_model.summary, thread_model.has_suggestion, message_count, thread_model.created_on, thread_model.last_updated, thread_model.last_nonempty_message_text, thread_model.last_nonempty_message_author_id)
def _get_thread_from_model(thread_model): """Converts the given FeedbackThreadModel to a FeedbackThread object. Args: thread_model: FeedbackThreadModel. Returns: FeedbackThread. The corresponding FeedbackThread domain object. """ if thread_model.message_count is None: message_count = feedback_models.FeedbackMessageModel.get_message_count( thread_model.exploration_id, thread_model.thread_id) else: message_count = thread_model.message_count return feedback_domain.FeedbackThread( thread_model.id, thread_model.exploration_id, thread_model.state_name, thread_model.original_author_id, thread_model.status, thread_model.subject, thread_model.summary, thread_model.has_suggestion, message_count, thread_model.created_on, thread_model.last_updated)
def test_to_dict(self): fake_date = datetime.datetime(2016, 4, 10, 0, 0, 0, 0) expected_thread_dict = { 'thread_id': self.THREAD_ID, 'status': u'open', 'state_name': u'a_state_name', 'summary': None, 'original_author_username': self.VIEWER_USERNAME, 'message_count': 1, 'subject': u'a subject', 'last_updated_msecs': utils.get_time_in_millisecs(fake_date), 'last_nonempty_message_text': 'last message', 'last_nonempty_message_author': self.VIEWER_USERNAME, } observed_thread = feedback_domain.FeedbackThread( self.THREAD_ID, feconf.ENTITY_TYPE_EXPLORATION, self.EXP_ID, expected_thread_dict['state_name'], self.viewer_id, expected_thread_dict['status'], expected_thread_dict['subject'], expected_thread_dict['summary'], False, 1, fake_date, fake_date, 'last message', self.viewer_id) self.assertDictEqual(expected_thread_dict, observed_thread.to_dict())