"""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') def test_learn_bridge_edit(self): """Test that we don't learn the speaker's nick when learning a message from the bridge.""" mock_event = mock.MagicMock() mock_event.arguments = [' hello this is a test message'] mock_event.target = '#test' mock_event.recursing = False mock_event.source = 'bridge!bridge@localhost' 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')