From 363ec49097ff436bf48b88ee8275aad2ef89001f Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sat, 18 Feb 2023 18:41:07 -0600 Subject: [PATCH] add test to confirm markov irc plugin behavior --- .gitignore | 1 - tests/fixtures/irc_server_fixture.json | 36 ++++++++++++++++++++++++++ tests/test_markov_ircplugin.py | 35 +++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 tests/fixtures/irc_server_fixture.json create mode 100644 tests/test_markov_ircplugin.py diff --git a/.gitignore b/.gitignore index 986398e..4b73dc0 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,6 @@ megahal.* dr.botzo.log dr.botzo.markov *.facts -*.json *.log *.pyc *.sqlite3 diff --git a/tests/fixtures/irc_server_fixture.json b/tests/fixtures/irc_server_fixture.json new file mode 100644 index 0000000..80631b7 --- /dev/null +++ b/tests/fixtures/irc_server_fixture.json @@ -0,0 +1,36 @@ +[ +{ + "model": "ircbot.ircserver", + "pk": 1, + "fields": { + "name": "Localhost", + "hostname": "localhost", + "port": 6697, + "password": null, + "nickname": "test_bot", + "realname": "test_bot", + "additional_addressed_nicks": "", + "use_ssl": true, + "use_ipv6": true, + "post_connect": "", + "delay_before_joins": 5, + "xmlrpc_host": "localhost", + "xmlrpc_port": 13132, + "replace_irc_control_with_markdown": false + } +}, +{ + "model": "ircbot.ircchannel", + "pk": 1, + "fields": { + "name": "#test", + "server": 1, + "autojoin": true, + "topic_msg": "", + "topic_time": "2022-09-09T18:28:29Z", + "topic_by": "", + "markov_learn_from_channel": true, + "discord_bridge": "bridge" + } +} +] diff --git a/tests/test_markov_ircplugin.py b/tests/test_markov_ircplugin.py new file mode 100644 index 0000000..aaebc92 --- /dev/null +++ b/tests/test_markov_ircplugin.py @@ -0,0 +1,35 @@ +"""Test IRC behavior of the markov plugin.""" +from unittest import mock + +from django.test import TestCase + +from ircbot.models import IrcServer +from markov.ircplugin import Markov + + +class MarkovTestCase(TestCase): + """Test the markov plugin.""" + + fixtures = ['tests/fixtures/irc_server_fixture.json'] + + def setUp(self): + """Create common objects.""" + self.mock_bot = mock.MagicMock() + self.mock_connection = mock.MagicMock() + + self.mock_connection.get_nickname.return_value = 'test_bot' + self.mock_connection.server_config = IrcServer.objects.get(pk=1) + + self.plugin = Markov(self.mock_bot, self.mock_connection, mock.MagicMock()) + + def test_learn(self): + """Test that an IRC event triggers learning as expected.""" + mock_event = mock.MagicMock() + mock_event.arguments = ['hello this is a test message'] + mock_event.target = '#test' + mock_event.recursing = False + + with mock.patch('markov.lib.learn_line') as mock_learn_line: + self.plugin.handle_chatter(self.mock_connection, mock_event) + + self.assertEqual(mock_learn_line.call_args.args[0], 'hello this is a test message')