class StatementIntegrationTestCase(TestCase): """ Test case to make sure that the Django Statement model and ChatterBot Statement object have a common interface. """ 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) # Simulate both statements being saved self.model.save() self.object.id = self.model.id def test_text(self): self.assertTrue(hasattr(self.object, 'text')) self.assertTrue(hasattr(self.model, 'text')) def test_in_response_to(self): self.assertTrue(hasattr(self.object, 'in_response_to')) self.assertTrue(hasattr(self.model, 'in_response_to')) def test_conversation(self): self.assertTrue(hasattr(self.object, 'conversation')) self.assertTrue(hasattr(self.model, 'conversation')) def test_tags(self): self.assertTrue(hasattr(self.object, 'tags')) self.assertTrue(hasattr(self.model, 'tags')) def test__str__(self): self.assertTrue(hasattr(self.object, '__str__')) self.assertTrue(hasattr(self.model, '__str__')) self.assertEqual(str(self.object), str(self.model)) def test_add_tags(self): self.object.add_tags('a', 'b') self.model.add_tags('a', 'b') self.assertIn('a', self.object.get_tags()) self.assertIn('a', self.model.get_tags()) def test_serialize(self): object_data = self.object.serialize() model_data = self.model.serialize() self.assertEqual(object_data, model_data)
class StatementIntegrationTestCase(TestCase): """ Test case to make sure that the Django Statement model and ChatterBot Statement object have a common interface. """ 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 test_text(self): self.assertTrue(hasattr(self.object, 'text')) self.assertTrue(hasattr(self.model, 'text')) def test_in_response_to(self): self.assertTrue(hasattr(self.object, 'in_response_to')) self.assertTrue(hasattr(self.model, 'in_response_to')) def test_conversation(self): self.assertTrue(hasattr(self.object, 'conversation')) self.assertTrue(hasattr(self.model, 'conversation')) def test_tags(self): self.assertTrue(hasattr(self.object, 'tags')) self.assertTrue(hasattr(self.model, 'tags')) def test__str__(self): self.assertTrue(hasattr(self.object, '__str__')) self.assertTrue(hasattr(self.model, '__str__')) self.assertEqual(str(self.object), str(self.model)) def test_add_tags(self): self.object.add_tags('a', 'b') self.model.add_tags('a', 'b') self.assertIn('a', self.object.get_tags()) self.assertIn('a', self.model.get_tags()) def test_serialize(self): object_data = self.object.serialize() model_data = self.model.serialize() self.assertEqual(object_data, model_data)
def createpost(request): if request.method == 'POST': if request.POST.get('title') and request.POST.get('content'): post = Statement() post.text = request.POST.get('title') post.in_response_to = request.POST.get('content') post.save() return render(request, 'try.html') else: return render(request, 'try.html')
def test_confidence(self): """ Test that the confidence value is not saved to the database. The confidence attribute on statements is intended to just hold the confidence of the statement when it returned as a response to some input. Because of that, the value of the confidence score should never be stored in the database with the statement. """ statement = StatementModel(text='Test statement') statement.confidence = 0.5 statement.save() statement_updated = StatementModel.objects.get(pk=statement.id) self.assertEqual(statement_updated.confidence, 0)
def test_confidence(self): """ Test that the confidence value is not saved to the database. The confidence attribute on statements is intended to just hold the confidence of the statement when it returned as a response to some input. Because of that, the value of the confidence score should never be stored in the database with the statement. """ statement = StatementModel(text='Test statement') statement.confidence = 0.5 statement.save() statement_updated = StatementModel.objects.get(pk=statement.id) self.assertEqual(statement_updated.confidence, 0)
def test_best_match(self): from chatterbot.logic import BestMatch adapter = BestMatch() adapter.set_chatbot(self.chatbot) statement1 = Statement(text='Do you like programming?') statement1.save() statement2 = Statement(text='Yes') statement2.save() response = Response(statement=statement1, response=statement2) response.save() response = adapter.process(statement1) self.assertEqual(response.text, 'Yes') self.assertEqual(response.confidence, 1)
def test_best_match(self): from chatterbot.logic import BestMatch adapter = BestMatch() adapter.set_chatbot(self.chatbot) statement1 = Statement(text='Do you like programming?') statement1.save() statement2 = Statement(text='Yes') statement2.save() response = Response(statement=statement1, response=statement2) response.save() response = adapter.process(statement1) self.assertEqual(response.text, 'Yes') self.assertEqual(response.confidence, 1)
class StatementIntegrationTestCase(TestCase): """ Test case to make sure that the Django Statement model and ChatterBot Statement object have a common interface. """ def setUp(self): super(StatementIntegrationTestCase, self).setUp() self.object = StatementObject(text='_') self.model = StatementModel(text='_') def test_text(self): self.assertTrue(hasattr(self.object, 'text')) self.assertTrue(hasattr(self.model, 'text')) def test_in_response_to(self): self.assertTrue(hasattr(self.object, 'in_response_to')) self.assertTrue(hasattr(self.model, 'in_response_to')) def test_extra_data(self): self.assertTrue(hasattr(self.object, 'extra_data')) self.assertTrue(hasattr(self.model, 'extra_data')) def test__str__(self): self.assertTrue(hasattr(self.object, '__str__')) self.assertTrue(hasattr(self.model, '__str__')) self.assertEqual(str(self.object), str(self.model)) def test_add_extra_data(self): self.object.add_extra_data('key', 'value') self.model.add_extra_data('key', 'value') def test_add_response(self): self.assertTrue(hasattr(self.object, 'add_response')) self.assertTrue(hasattr(self.model, 'add_response')) def test_remove_response(self): self.object.add_response(ResponseObject('Hello')) model_response_statement = StatementModel.objects.create(text='Hello') self.model.save() self.model.in_response.create(statement=self.model, response=model_response_statement) object_removed = self.object.remove_response('Hello') model_removed = self.model.remove_response('Hello') self.assertTrue(object_removed) self.assertTrue(model_removed) 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() ResponseModel.objects.create( statement=self.model, response=model_response_statement ) ResponseModel.objects.create( statement=self.model, response=model_response_statement ) 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_serialize(self): object_data = self.object.serialize() model_data = self.model.serialize() self.assertEqual(object_data, model_data) def test_response_statement_cache(self): self.assertTrue(hasattr(self.object, 'response_statement_cache')) self.assertTrue(hasattr(self.model, 'response_statement_cache'))