def setUp(self):
        self.am = Mock(ArbiterManager, name='arbiter_manager')
        self.zka = Mock(ZookeeperAdaptor, name='zookeeper_adaptor')
        self.zka.get_appliction_by_name = Mock(return_value=('COMMAND', 'DATA'))
        self.zka.get_applications = Mock(return_value=['APP1'])
        self.queue = Mock(Queue, name='queue')
        self.queue.get = Mock(side_effect=self.queue_contents + [(STOP_COMMAND, None)])

        self.fairground = Fairground(self.am, self.zka, self.queue)
        self.fairground.main()
class DescribeFairground(TestCase):

    queue_contents = []

    def setUp(self):
        self.am = Mock(ArbiterManager, name='arbiter_manager')
        self.zka = Mock(ZookeeperAdaptor, name='zookeeper_adaptor')
        self.zka.get_appliction_by_name = Mock(return_value=('COMMAND', 'DATA'))
        self.zka.get_applications = Mock(return_value=['APP1'])
        self.queue = Mock(Queue, name='queue')
        self.queue.get = Mock(side_effect=self.queue_contents + [(STOP_COMMAND, None)])

        self.fairground = Fairground(self.am, self.zka, self.queue)
        self.fairground.main()

    def should_stop_arbiter_manager(self):
        self.am.stop.assert_called_once_with()

    def should_stop_zookeeper_adaptor(self):
        self.zka.stop.assert_called_once_with()

    def should_add_command_to_check_existing_applications(self):
        self.queue.put.assert_any_call((CHECK_EXISTING_APPLICATIONS, None))