Exemplo n.º 1
0
        public async Task ShouldProperlyExecuteFailurePipelineWhenMessageHandlingServiceThrowsException()
        {
            var argsMock  = new Mock <BasicDeliverEventArgs>();
            var exception = new Exception();
            var messageHandlingServiceMock = new Mock <IMessageHandlingService>();

            messageHandlingServiceMock.Setup(x => x.HandleMessageReceivingEvent(It.IsAny <MessageHandlingContext>()))
            .ThrowsAsync(exception);
            var errorProcessingServiceMock = new Mock <IErrorProcessingService>();

            var middlewareOrderingMap = new Dictionary <int, int>();
            var firstMiddleware       = new StubMessageHandlingMiddleware(1, new Dictionary <int, int>(), middlewareOrderingMap);
            var secondMiddleware      = new StubMessageHandlingMiddleware(2, new Dictionary <int, int>(), middlewareOrderingMap);
            var thirdMiddleware       = new StubMessageHandlingMiddleware(3, new Dictionary <int, int>(), middlewareOrderingMap);
            var middlewares           = new List <IMessageHandlingMiddleware>
            {
                firstMiddleware,
                secondMiddleware,
                thirdMiddleware
            };

            var service = CreateService(
                messageHandlingServiceMock.Object,
                errorProcessingServiceMock.Object,
                middlewares);
            var context = new MessageHandlingContext(argsMock.Object, AckAction, false);
            await service.Execute(context);

            errorProcessingServiceMock.Verify(x => x.HandleMessageProcessingFailure(It.IsAny <MessageHandlingContext>(), exception), Times.Once);
            Assert.Equal(1, middlewareOrderingMap[thirdMiddleware.Number]);
            Assert.Equal(2, middlewareOrderingMap[secondMiddleware.Number]);
            Assert.Equal(3, middlewareOrderingMap[firstMiddleware.Number]);
        }
Exemplo n.º 2
0
        public async Task ShouldProperlyExecutePipeline()
        {
            var argsMock = new Mock <BasicDeliverEventArgs>();
            var messageHandlingServiceMock = new Mock <IMessageHandlingService>();
            var errorProcessingServiceMock = new Mock <IErrorProcessingService>();

            var middlewareOrderingMap = new Dictionary <int, int>();
            var firstMiddleware       = new StubMessageHandlingMiddleware(1, middlewareOrderingMap, new Dictionary <int, int>());
            var secondMiddleware      = new StubMessageHandlingMiddleware(2, middlewareOrderingMap, new Dictionary <int, int>());
            var thirdMiddleware       = new StubMessageHandlingMiddleware(3, middlewareOrderingMap, new Dictionary <int, int>());
            var middlewares           = new List <IMessageHandlingMiddleware>
            {
                firstMiddleware,
                secondMiddleware,
                thirdMiddleware
            };

            var service = CreateService(
                messageHandlingServiceMock.Object,
                errorProcessingServiceMock.Object,
                middlewares);
            await service.Execute(argsMock.Object, AckAction);

            messageHandlingServiceMock.Verify(x => x.HandleMessageReceivingEvent(It.IsAny <MessageHandlingContext>()), Times.Once);
            Assert.Equal(1, middlewareOrderingMap[thirdMiddleware.Number]);
            Assert.Equal(2, middlewareOrderingMap[secondMiddleware.Number]);
            Assert.Equal(3, middlewareOrderingMap[firstMiddleware.Number]);
        }