Ejemplo n.º 1
0
    def test_that_dispatcher_calls_before_handler(self):
        before = mock.Mock()

        dispatcher = eventhandler.Dispatcher(before_handler=before)
        dispatcher.dispatch_event({'type': 'event_type'})

        before.assert_called_once_with()
Ejemplo n.º 2
0
    def test_that_dispatcher_loads_event_defs_and_dispatches(self):
        event = {'type': 'event_type', 'payload': 'some payload'}

        dispatcher = eventhandler.Dispatcher()
        dispatcher.dispatch_event(event)

        self.handler.assert_called_once_with(event)
Ejemplo n.º 3
0
    def test_that_dispatcher_calls_before_handler_once_for_each_event(self):
        eventhandler.HANDLERS = {'event_type': [self.handler, self.handler]}
        before = mock.Mock()

        dispatcher = eventhandler.Dispatcher(before_handler=before)
        dispatcher.dispatch_event({'type': 'event_type'})

        before.assert_called_once_with()
Ejemplo n.º 4
0
    def test_that_before_handler_absorbs_exceptions_when_told_to_do_so(self):
        before = mock.Mock(side_effect=RuntimeError)

        dispatcher = eventhandler.Dispatcher(before_handler=before,
                                             ignore_handler_exceptions=True)
        dispatcher.dispatch_event({'type': 'event_type'})

        before.assert_called_once_with()
        self.assertTrue(True)  # Wouldn't be reached unless Error was caught
Ejemplo n.º 5
0
    def test_that_dispatcher_dispatches_to_multiple_handlers(self):
        other_handler = mock.Mock(__name__='other_handler')
        eventhandler.HANDLERS = {'event_type': [self.handler, other_handler]}

        event = {'type': 'event_type', 'payload': 'some payload'}
        dispatcher = eventhandler.Dispatcher()
        dispatcher.dispatch_event(event)

        self.handler.assert_called_once_with(event)
        other_handler.assert_called_once_with(event)
Ejemplo n.º 6
0
    def test_that_dispatcher_absorbs_all_exceptions_when_told_to_do_so(self):
        handler = mock.Mock(__name__='my_handler')
        handler.side_effect = RuntimeError

        eventhandler.HANDLERS = {'event_type': [handler, self.handler]}

        event = {'type': 'event_type', 'payload': 'some payload'}
        dispatcher = eventhandler.Dispatcher(ignore_handler_exceptions=True)
        dispatcher.dispatch_event(event)

        self.handler.assert_called_once_with(event)
Ejemplo n.º 7
0
    def test_that_dispatcher_does_not_absorb_handler_exceptions(self):
        handler = mock.Mock(__name__='my_handler')
        handler.side_effect = RuntimeError

        eventhandler.HANDLERS = {'event_type': [handler, self.handler]}

        event = {'type': 'event_type', 'payload': 'some payload'}
        dispatcher = eventhandler.Dispatcher()

        with self.assertRaises(RuntimeError):
            dispatcher.dispatch_event(event)
Ejemplo n.º 8
0
    def test_that_handler_can_not_change_event_data_for_other_handlers(self):
        def first_handler(event):
            event['data'] = 'changed'

        eventhandler.HANDLERS = {'event_type': [first_handler, self.handler]}

        dispatcher = eventhandler.Dispatcher()

        event_tochange = {'type': 'event_type', 'data': 'not_changed'}
        dispatcher.dispatch_event(event_tochange)

        expected_handler_argument = self.handler.mock_calls[0][1][0]
        self.assertEqual(expected_handler_argument, {
            'type': 'event_type',
            'data': 'not_changed'
        })
Ejemplo n.º 9
0
    def test_that_dispatcher_raises_error_if_event_has_no_type(self):
        dispatcher = eventhandler.Dispatcher()

        with self.assertRaises(RuntimeError):
            dispatcher.dispatch_event({})
Ejemplo n.º 10
0
    def test_that_before_handler_does_not_absorb_exceptions(self):
        before = mock.Mock(side_effect=RuntimeError)

        dispatcher = eventhandler.Dispatcher(before_handler=before)
        self.assertRaises(RuntimeError, dispatcher.dispatch_event,
                          {'type': 'event_type'})
Ejemplo n.º 11
0
    def test_that_dispatcher_absorbs_events_without_handler(self):
        event = {'type': 'unknown_type', 'payload': 'some payload'}
        dispatcher = eventhandler.Dispatcher()
        dispatcher.dispatch_event(event)

        self.assertEqual(len(self.handler.mock_calls), 0)
Ejemplo n.º 12
0
    def test_that_dispatcher_does_not_raise_error_if_event_has_no_type_when_told_to(
            self):
        dispatcher = eventhandler.Dispatcher(error_on_missing_type=False)
        dispatcher.dispatch_event({})

        self.assertEqual(len(self.handler.mock_calls), 0)