예제 #1
0
    def test_handle_when_response_type_is_list(self, mock_serializer_factory,
                                               mock_logger_factory):
        # Given
        next_response = [TestResponse(success=True)]

        async def next_handle(req):
            return next_response

        mock_test_pipeline = MagicMock()
        mock_test_pipeline.handle = next_handle

        log_pipeline = LogPipeline()
        log_pipeline.set_next(mock_test_pipeline)

        # When
        response = self.async_loop(log_pipeline.handle(TestRequest()))

        # Then
        assert response is not None
        assert response == next_response
        assert len(response) == 1
        assert mock_serializer_factory.get_serializer.called
        assert mock_serializer_factory.get_serializer.return_value.deserialize.called
        assert mock_serializer_factory.get_serializer.return_value.deserialize.call_count == 2
        assert mock_logger_factory.get_logger.called
        assert mock_logger_factory.get_logger.return_value.log.called
        assert mock_logger_factory.get_logger.return_value.log.call_count == 1
예제 #2
0
    def test_handle_log_when_response_type_is_list(self, mock_logger_factory):
        # Given
        next_response = [TestResponse(success=True)]

        async def next_handle(req):
            return next_response

        mock_test_pipeline = MagicMock()
        mock_test_pipeline.handle = next_handle

        log_pipeline = LogPipeline()
        log_pipeline.set_next(mock_test_pipeline)

        # When
        response = self.async_loop(log_pipeline.handle(TestRequest()))

        # Then
        assert response is not None
        assert response == next_response
        assert len(response) == 1
        assert mock_logger_factory.get_logger.called
        assert mock_logger_factory.get_logger.return_value.log.called
        assert mock_logger_factory.get_logger.return_value.log.call_count == 1
        mock_logger_factory.get_logger.return_value. \
            log.assert_called_once_with(source="LogPipeline",
                                        message="TestRequest",
                                        data={'req': {}, 'res': [{'success': True}]})
예제 #3
0
    def test_handle_return_exception_when_next_is_none(self):
        # Given
        log_pipeline = LogPipeline()

        # When
        with self.assertRaises(Exception) as context:
            self.async_loop(log_pipeline.handle(TestRequest()))

        # Then
        assert context.exception.args[
            0] == 'pydiator_log_pipeline_has_no_next_pipeline'
예제 #4
0
    def test_handle_return_exception_when_next_handle_is_none(self):
        # Given
        mock_test_pipeline = MagicMock()
        mock_test_pipeline.handle = None

        log_pipeline = LogPipeline()
        log_pipeline.set_next(mock_test_pipeline)

        # When
        with self.assertRaises(Exception) as context:
            self.async_loop(log_pipeline.handle(TestRequest()))

        # Then
        assert context.exception.args[
            0] == 'handle_function_of_next_pipeline_is_not_valid_for_log_pipeline'
예제 #5
0
def set_up_pydiator():
    container = MediatrContainer()

    if TRACER_IS_ENABLED and TRACER_PIPELINE_IS_ENABLED:
        container.register_pipeline(TracerPipeline())

    if LOG_PIPELINE_IS_ENABLED:
        container.register_pipeline(LogPipeline())

    if CACHE_PIPELINE_IS_ENABLED:
        cache_pipeline = CachePipeline(get_cache_provider())
        container.register_pipeline(cache_pipeline)

    # Service usecases mapping
    # container.register_request(GetSampleByIdRequest, GetSampleByIdUseCase())
    container.register_request(GetTodoAllRequest, GetTodoAllUseCase())
    container.register_request(GetTodoByIdRequest, GetTodoByIdUseCase())
    container.register_request(AddTodoRequest, AddTodoUseCase())
    container.register_request(UpdateTodoRequest, UpdateTodoUseCase())
    container.register_request(DeleteTodoByIdRequest, DeleteTodoByIdUseCase())

    # Data usecases mapping
    container.register_request(GetTodoAllDataRequest, GetTodoAllDataUseCase())
    container.register_request(GetTodoByIdDataRequest, GetTodoByIdDataUseCase())
    container.register_request(AddTodoDataRequest, AddTodoDataUseCase())
    container.register_request(DeleteTodoByIdDataRequest, DeleteTodoByIdDataUseCase())
    container.register_request(UpdateTodoDataRequest, UpdateTodoDataUseCase())

    # Notification mapping
    container.register_notification(TodoTransactionNotification,
                                    [TodoRemoveCacheSubscriber(), TransactionLogSubscriber()])

    # Start
    pydiator.ready(container=container)
예제 #6
0
    def test_handle_when_response_is_str(self):
        # Given
        next_response_text = "next_response"

        async def next_handle(req):
            return next_response_text

        mock_test_pipeline = MagicMock()
        mock_test_pipeline.handle = next_handle

        log_pipeline = LogPipeline()
        log_pipeline.set_next(mock_test_pipeline)

        # When
        response = self.async_loop(log_pipeline.handle(TestRequest()))

        # Then
        assert response is not None
        assert response == next_response_text
예제 #7
0
def set_up_pydiator():
    container = MediatrContainer()
    container.register_pipeline(LogPipeline())

    # Service usecases mapping
    container.register_request(GetTodoAllRequest, GetTodoAllUseCase())
    container.register_request(GetTodoByIdRequest, GetTodoByIdUseCase())

    # Start
    pydiator.ready(container=container)
예제 #8
0
def set_up_pydiator():
    container = MediatrContainer()
    container.register_request(GetSampleByIdRequest, GetSampleByIdUseCase())
    container.register_pipeline(LogPipeline())
    pydiator.ready(container=container)