예제 #1
0
    def test_publish_when_handle_has_exception_and_throw_exception(self):
        # Given
        async def next_handle(notification):
            raise Exception("test_exception")

        mock_notification_handler = mock.MagicMock()
        mock_notification_handler.handle.side_effect = next_handle

        container = FakeMediatrContainer()
        container.register_notification(TestNotification(),
                                        [mock_notification_handler])

        mediatr = Mediatr()
        mediatr.ready(container)

        # When
        with self.assertRaises(Exception) as context:
            self.async_loop(
                mediatr.publish(notification=TestNotification(),
                                throw_exception=True))

        # Then
        assert mock_notification_handler.handle.called
        assert mock_notification_handler.handle.call_count == 1
        assert 'test_exception' == context.exception.args[0]
예제 #2
0
    def test_ready_when_is_not_ready(self):
        # Given
        container = FakeMediatrContainer()
        mediatr = Mediatr()

        # When
        mediatr.ready(container=container)

        # Then
        assert mediatr.is_ready
        assert len(container.get_pipelines()) == 1
예제 #3
0
    def test_ready_when_container_and_logger_set(self):
        # Given
        container = FakeMediatrContainer()
        mediatr = Mediatr()

        # When
        mediatr.ready(container=container, logger={})

        # Then
        assert mediatr.is_ready is True
        assert not isinstance(LoggerFactory.get_logger(), BaseLogger)
        assert LoggerFactory.get_logger() == {}
        assert len(container.get_pipelines()) == 1
예제 #4
0
    def test_publish_when_handlers_is_empty(self):
        # Given
        container = FakeMediatrContainer()
        mediatr = Mediatr()
        container.register_notification(TestNotification(), [])
        mediatr.ready(container)

        # When
        with self.assertRaises(Exception) as context:
            self.async_loop(mediatr.publish(BaseNotification()))

        # Then
        assert 'mediatr_container_has_not_contain_any_notification_handler_for:BaseNotification' == \
               context.exception.args[0]
예제 #5
0
    def test_ready_when_serializer_is_none(self):
        # Given
        mediatr_container = FakeMediatrContainer()
        mediatr = Mediatr()

        # When
        mediatr.ready(container=mediatr_container)

        # Then
        assert mediatr.is_ready is True
        assert isinstance(SerializerFactory.get_serializer(), BaseSerializer)
예제 #6
0
    def test_ready_when_serializer_is_not_none(self):
        # Given
        container = FakeMediatrContainer()
        mediatr = Mediatr()

        # When
        mediatr.ready(container=container, serializer={})

        # Then
        assert mediatr.is_ready is True
        assert SerializerFactory.get_serializer() == {}
예제 #7
0
    def test_ready_when_logger_is_none(self):
        # Given
        container = FakeMediatrContainer()
        mediatr = Mediatr()

        # When
        mediatr.ready(container=container)

        # Then
        assert mediatr.is_ready is True
        assert isinstance(LoggerFactory.get_logger(), BaseLogger)
예제 #8
0
    def test_publish_when_handle_has_exception(self):
        # Given
        async def next_handle(notification):
            raise Exception("")

        mock_notification_handler = mock.MagicMock()
        mock_notification_handler.handle.side_effect = next_handle

        container = FakeMediatrContainer()
        container.register_notification(TestNotification(),
                                        [mock_notification_handler])

        mediatr = Mediatr()
        mediatr.ready(container)

        # When
        self.async_loop(mediatr.publish(notification=TestNotification()))

        # Then
        assert mock_notification_handler.handle.called
        assert mock_notification_handler.handle.call_count == 1
예제 #9
0
    def test_send_return_default_pipeline_result_when_container_pipelines_is_empty(
            self, mock_default_pipeline):
        # Given
        next_response = TestResponse(success=True)

        async def next_handle(req):
            return next_response

        mock_default_pipeline.return_value.handle = next_handle
        container = FakeMediatrContainer()
        mediatr = Mediatr()
        mediatr.ready(container)

        # When
        response = self.async_loop(mediatr.send(TestRequest()))

        # Then
        assert response is next_response
        assert response.success