Пример #1
0
    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')
Пример #2
0
    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')
Пример #3
0
    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())
Пример #4
0
    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)
Пример #7
0
    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
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
    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)
Пример #12
0
    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
Пример #14
0
    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)