def test_create_many_text(self): self.adapter.create_many( [StatementObject(text='A'), StatementObject(text='B')]) results = list(self.adapter.filter()) self.assertEqual(len(results), 2) self.assertEqual(results[0].text, 'A') self.assertEqual(results[1].text, 'B')
def test_create_many_search_in_response_to(self): self.adapter.create_many([ StatementObject(text='A', search_in_response_to='a'), StatementObject(text='B', search_in_response_to='b') ]) results = self.adapter.filter() self.assertEqual(len(results), 2) self.assertEqual(results[0].search_in_response_to, 'a') self.assertEqual(results[1].search_in_response_to, 'b')
def test_create_many_tags(self): self.adapter.create_many([ StatementObject(text='A', tags=['first', 'letter']), StatementObject(text='B', tags=['second', 'letter']) ]) results = self.adapter.filter() self.assertEqual(len(results), 2) self.assertIn('letter', results[0].get_tags()) self.assertIn('letter', results[1].get_tags()) self.assertIn('first', results[0].get_tags()) self.assertIn('second', results[1].get_tags())
def get_latest_response(self, conversation): """ Returns the latest response in a conversation if it exists. Returns None if a matching conversation cannot be found. """ from chatterbot.conversation import Statement as StatementObject conversation_statements = list( self.storage.filter(conversation=conversation, order_by=['id'])) # Get the most recent statement in the conversation if one exists latest_statement = conversation_statements[ -1] if conversation_statements else None if latest_statement: if latest_statement.in_response_to: response_statements = list( self.storage.filter(conversation=conversation, text=latest_statement.in_response_to, order_by=['id'])) if response_statements: return response_statements[-1] else: return StatementObject( text=latest_statement.in_response_to, conversation=conversation) else: # The case that the latest statement is not in response to another statement return latest_statement return None
def setUp(self): super(ResponseIntegrationTestCase, self).setUp() statement_object = StatementObject(text='_') statement_model = StatementModel.objects.create(text='_') self.object = ResponseObject(statement_object.text) self.model = ResponseModel(statement=statement_model, response=statement_model) self.model.save()
def setUp(self): super(ResponseIntegrationTestCase, self).setUp() date_created = timezone.now() statement_object = StatementObject(text='_', created_at=date_created) statement_model = StatementModel.objects.create(text='_', created_at=date_created) self.object = ResponseObject(statement_object.text) self.model = ResponseModel(statement=statement_model, response=statement_model)
def get_statement(self): from chatterbot.conversation import Statement as StatementObject statement = StatementObject(self.text, extra_data=self.extra_data) for response in self.in_response_to: statement.add_response(response.get_response()) return statement
def get_statement(self): from chatterbot.conversation import Statement as StatementObject return StatementObject(id=self.id, text=self.text, conversation=self.conversation, created_at=self.created_at, tags=self.get_tags(), in_response_to=self.in_response_to)
def setUp(self): super(StatementIntegrationTestCase, self).setUp() from datetime import datetime from pytz import UTC now = datetime(2020, 2, 15, 3, 14, 10, 0, UTC) self.object = StatementObject(text='_', created_at=now) self.model = StatementModel(text='_', created_at=now)
def get_statement(self): from chatterbot.conversation import Statement as StatementObject from chatterbot.conversation import Response as ResponseObject statement = StatementObject(self.text, tags=[tag.name for tag in self.tags], extra_data=self.extra_data) for response in self.in_response_to: statement.add_response( ResponseObject(text=response.text, occurrence=response.occurrence)) return statement
def test_get_response_count(self): self.object.add_response(ResponseObject('Hello', occurrence=2)) model_response_statement = StatementModel.objects.create(text='Hello') self.model.save() self.model.in_response.create( statement=self.model, response=model_response_statement, occurrence=2 ) object_count = self.object.get_response_count(StatementObject(text='Hello')) model_count = self.model.get_response_count(StatementModel(text='Hello')) self.assertEqual(object_count, 2) self.assertEqual(model_count, 2)
def test_create_many_duplicate_tags(self): """ The storage adapter should not create a statement with tags that are duplicates. """ self.adapter.create_many( [StatementObject(text='testing', tags=['ab', 'ab'])]) results = list(self.adapter.filter()) self.assertEqual(len(results), 1) self.assertEqual(len(results[0].get_tags()), 1) self.assertEqual(results[0].get_tags(), ['ab'])
def setUp(self): super().setUp() from datetime import datetime from pytz import UTC now = datetime(2020, 2, 15, 3, 14, 10, 0, UTC) self.object = StatementObject(text='_', created_at=now) self.model = StatementModel(text='_', created_at=now) # Simulate both statements being saved self.model.save() self.object.id = self.model.id
def model_to_object(self, statement): from chatterbot.conversation import Statement as StatementObject return StatementObject(**statement.serialize())
def setUp(self): super(StatementIntegrationTestCase, self).setUp() self.object = StatementObject(text='_') self.model = StatementModel(text='_')
def setUp(self): super(StatementIntegrationTestCase, self).setUp() date_created = timezone.now() self.object = StatementObject(text='_', created_at=date_created) self.model = StatementModel(text='_', created_at=date_created)