Example #1
0
    def test_register_request_return_when_handler_is_not_instance_of_base_handler(
            self):
        # Given
        container = MediatrContainer()

        # When
        container.register_request(req=TestRequest, handler={})

        # Then
        assert len(container.get_requests()) == 0
    def test_handle_return_handle_response_when_handle_is_sync(self):
        # Given
        container = MediatrContainer()
        container.register_request(TestRequest, TestSyncHandler())
        self.pipeline = DefaultPipeline(container)

        # When
        response = self.async_loop(self.pipeline.handle(req=TestRequest()))

        # Then
        assert isinstance(response, BaseResponse)
Example #3
0
    def test_register_request_return_when_request_is_not_instance_of_base_request(
            self):
        # Given
        handler = TestHandler()
        container = MediatrContainer()

        # When
        container.register_request(req=TestResponse, handler=handler)

        # Then
        assert len(container.get_requests()) == 0
Example #4
0
    def test_read_default_values_when_create_instance(self):
        # Given

        # When
        container = MediatrContainer()

        # Then
        assert container.get_requests() == {}
        assert container.get_notifications() == {}
        assert container.get_pipelines() == []
        assert container._MediatrContainer__base_notification_get_class_method_name == BaseNotification.get_class_name.__name__
        assert container._MediatrContainer__base_notification_get_class_method_name == BaseRequest.get_class_name.__name__
Example #5
0
    def test_prepare_pipes_when_pipelines_length_is_equal_1(self):
        # Given
        response = TestResponse(success=True)
        container = MediatrContainer()
        test_pipeline = TestPipeline(response)

        # When
        container.prepare_pipes(test_pipeline)

        # Then
        assert len(container.get_pipelines()) == 1
        assert test_pipeline.has_next() is False
Example #6
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)
    def test_handle_return_exception_when_handler_is_not(self):
        # Given
        pipeline = DefaultPipeline(MediatrContainer())

        # When
        with self.assertRaises(Exception) as context:
            self.async_loop(pipeline.handle(req=TestRequest()))

        # Then
        assert context.exception.args[
            0] == f'handler_not_found_for_request_:{type(TestRequest()).__name__}'
Example #8
0
    def test_register_notification_when_added_notification(self):
        # Given
        container = MediatrContainer()

        # When
        container.register_notification(TestNotification,
                                        [TestNotificationHandler()])

        # Then
        assert container.get_requests() == {}
        assert container.get_pipelines() == []
        assert len(container.get_notifications()) == 1
Example #9
0
    def test_register_pipeline(self):
        # Given
        container = MediatrContainer()
        response = TestResponse(success=True)

        # When
        container.register_pipeline(TestPipeline(response))

        # Then
        assert container.get_requests() == {}
        assert container.get_notifications() == {}
        assert len(container.get_pipelines()) == 1
Example #10
0
    def test_register_request(self):
        # Given
        request = TestRequest()
        handler = TestHandler()
        container = MediatrContainer()

        # When
        container.register_request(req=TestRequest, handler=handler)

        # Then
        assert container.get_notifications() == {}
        assert len(container.get_requests()) == 1
        assert container.get_requests()[
            TestRequest.get_class_name()] is not None
        assert container.get_requests()[
            TestRequest.get_class_name()] == handler
Example #11
0
    def test_register_notification_when_notification__is_not_instance_of_base_notification(
            self):
        # Given
        container = MediatrContainer()

        # When
        container.register_notification(MediatrContainer,
                                        [TestNotificationHandler()])
        response = container.get_notifications()

        # Then
        assert container.get_requests() == {}
        assert container.get_pipelines() == []
        assert len(response) == 0
Example #12
0
    def test_get_notifications(self):
        # Given
        container = MediatrContainer()
        handlers = [TestNotificationHandler()]

        # When
        container.register_notification(TestNotification, handlers)
        response = container.get_notifications()

        # Then
        assert container.get_requests() == {}
        assert container.get_pipelines() == []
        assert len(response) == 1
        assert response[TestNotification.get_class_name()] is not None
        assert response[TestNotification.get_class_name()] == handlers
Example #13
0
    def test_get_pipelines(self):
        # Given
        response = TestResponse(success=True)
        container = MediatrContainer()
        pipeline = TestPipeline(response)

        # When
        container.register_pipeline(pipeline)
        response = container.get_pipelines()

        # Then
        assert container.get_requests() == {}
        assert container.get_notifications() == {}
        assert len(response) == 1
        assert response[0] is pipeline
Example #14
0
    def test_prepare_pipes_when_pipelines_length_is_greater_than_1(self):
        # Given
        response = TestResponse(success=True)
        test_pipeline = TestPipeline(response)
        test_default_pipeline = TestPipeline(response)

        container = MediatrContainer()
        container.register_pipeline(test_pipeline)

        # When
        container.prepare_pipes(test_default_pipeline)

        # Then
        assert len(container.get_pipelines()) == 2
        assert test_pipeline.has_next()
        assert test_default_pipeline.has_next() is False
Example #15
0
 def register_request(req, handler):
     container = MediatrContainer()
     container.register_request(req, handler)
     pydiator.ready(container=container)
Example #16
0
def set_up_pydiator():
    container = MediatrContainer()
    container.register_request(GetSampleByIdRequest, GetSampleByIdUseCase())
    container.register_pipeline(LogPipeline())
    pydiator.ready(container=container)
Example #17
0
def set_up_pydiator():
    container = MediatrContainer()
    # Sample1Subscriber,Sample2Subscriber,Sample3Subscriber are triggered for every SampleNotification
    container.register_notification(SampleNotification, [Sample1Subscriber(), Sample2Subscriber(),
                                                         Sample3Subscriber()])
    pydiator.ready(container=container)
Example #18
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)