예제 #1
0
class TestRobot(asynctest.TestCase):

    def setUp(self):
        patcher1 = patch('charlesbot.robot.Robot.initialize_robot')
        self.addCleanup(patcher1.stop)
        self.mock_initialize_robot = patcher1.start()

        from charlesbot.robot import Robot
        self.robot = Robot()

    @asynctest.ignore_loop
    def test_exit_cleanly_no_plugins(self):
        self.robot.plugin_list = []
        self.robot.exit_cleanly()
        self.assertEqual(self.robot.is_running(), False)

    @asynctest.ignore_loop
    def test_exit_cleanly_multiple_plugins(self):
        plugin1 = MagicMock()
        plugin2 = MagicMock()
        self.robot.plugin_list = [plugin1, plugin2]
        self.robot.exit_cleanly()
        self.assertEqual(self.robot.is_running(), False)
        self.assertFalse(plugin1.is_running)
        self.assertFalse(plugin2.is_running)

    def test_queue_message_empty_msg_1(self):
        plugin1 = MagicMock()
        msg = ""
        yield from self.robot.queue_message(msg, plugin1)
        self.assertEqual(plugin1.method_calls, [])

    def test_queue_message_empty_msg_2(self):
        plugin1 = MagicMock()
        msg = []
        yield from self.robot.queue_message(msg, plugin1)
        self.assertEqual(plugin1.method_calls, [])

    def test_queue_message_actual_msg_1(self):
        plugin1 = MagicMock()
        msg = "HelloPlugin"
        yield from self.robot.queue_message(msg, plugin1)
        expected = call.queue_message('HelloPlugin')
        self.assertEqual(plugin1.method_calls, [expected])

    def test_queue_message_actual_msg_2(self):
        plugin1 = MagicMock()
        msg = ["HelloPlugin"]
        yield from self.robot.queue_message(msg, plugin1)
        expected = call.queue_message(['HelloPlugin'])
        self.assertEqual(plugin1.method_calls, [expected])