Beispiel #1
0
        public void ReceivedOn_is_attached_to_context_from_clock(EventMessage <FirstTestEvent> eventMessage, DateTimeOffset now)
        {
            Clock.SetTo(new TestClock(now));

            var sut = new NybusEventContext <FirstTestEvent>(eventMessage);

            Assert.That(sut.ReceivedOn, Is.EqualTo(now));

            Clock.Reset();
        }
Beispiel #2
0
        public async Task ExecuteEventHandlerAsync_notifies_engine_on_success([Frozen] IServiceProvider serviceProvider, [Frozen] IBusEngine engine, NybusHost sut, IDispatcher dispatcher, EventMessage <FirstTestEvent> eventMessage, IServiceScopeFactory scopeFactory, IEventHandler <FirstTestEvent> handler)
        {
            var handlerType = handler.GetType();

            var context = new NybusEventContext <FirstTestEvent>(eventMessage);

            Mock.Get(serviceProvider).Setup(p => p.GetService(typeof(IServiceScopeFactory))).Returns(scopeFactory);

            Mock.Get(serviceProvider).Setup(p => p.GetService(handlerType)).Returns(handler);

            await sut.ExecuteEventHandlerAsync(dispatcher, context, handlerType);

            Mock.Get(engine).Verify(p => p.NotifySuccessAsync(context.Message));
        }
Beispiel #3
0
        public async Task ExecuteEventHandlerAsync_executes_error_filter_on_fail([Frozen] IServiceProvider serviceProvider, [Frozen] IBusEngine engine, [Frozen] INybusConfiguration configuration, NybusHost sut, IDispatcher dispatcher, EventMessage <FirstTestEvent> eventMessage, IServiceScopeFactory scopeFactory, IEventHandler <FirstTestEvent> handler, Exception error, IErrorFilter errorFilter)
        {
            configuration.EventErrorFilters = new[] { errorFilter };

            var handlerType = handler.GetType();

            var context = new NybusEventContext <FirstTestEvent>(eventMessage);

            Mock.Get(serviceProvider).Setup(p => p.GetService(typeof(IServiceScopeFactory))).Returns(scopeFactory);

            Mock.Get(serviceProvider).Setup(p => p.GetService(handlerType)).Returns(handler);

            Mock.Get(handler).Setup(p => p.HandleAsync(It.IsAny <IDispatcher>(), It.IsAny <IEventContext <FirstTestEvent> >())).Throws(error);

            await sut.ExecuteEventHandlerAsync(dispatcher, context, handlerType);

            Mock.Get(errorFilter).Verify(p => p.HandleErrorAsync(context, error, It.IsAny <EventErrorDelegate <FirstTestEvent> >()));
        }
Beispiel #4
0
        public async Task HandleError_forwards_to_next_if_retry_count_equal_or_greater_than_maxRetries([Frozen] RetryErrorFilterOptions options, [Frozen] IBusEngine engine, RetryErrorFilter sut, Exception error, NybusEventContext <FirstTestEvent> context, EventErrorDelegate <FirstTestEvent> next)
        {
            context.Message.Headers[Headers.RetryCount] = options.MaxRetries.Stringfy();

            await sut.HandleErrorAsync(context, error, next);

            Mock.Get(engine).VerifyNoOtherCalls();

            Mock.Get(next).Verify(p => p(context, error));
        }
Beispiel #5
0
        public async Task HandleError_adds_retry_count_if_retry_count_not_present([Frozen] IBusEngine engine, RetryErrorFilter sut, Exception error, NybusEventContext <FirstTestEvent> context, EventErrorDelegate <FirstTestEvent> next)
        {
            await sut.HandleErrorAsync(context, error, next);

            Assert.That(context.Message.Headers.ContainsKey(Headers.RetryCount));
        }
Beispiel #6
0
        public async Task HandleError_retries_if_retry_count_not_present([Frozen] IBusEngine engine, RetryErrorFilter sut, Exception error, NybusEventContext <FirstTestEvent> context, EventErrorDelegate <FirstTestEvent> next)
        {
            await sut.HandleErrorAsync(context, error, next);

            Mock.Get(engine).Verify(p => p.SendMessageAsync(context.EventMessage));
        }
Beispiel #7
0
        public async Task HandleError_increments_retry_count_if_retry_count_present([Frozen] RetryErrorFilterOptions options, [Frozen] IBusEngine engine, RetryErrorFilter sut, Exception error, NybusEventContext <FirstTestEvent> context, EventErrorDelegate <FirstTestEvent> next)
        {
            context.Message.Headers[Headers.RetryCount] = (options.MaxRetries - 2).Stringfy();

            await sut.HandleErrorAsync(context, error, next);

            Assert.That(context.Message.Headers.ContainsKey(Headers.RetryCount));
            Assert.That(context.Message.Headers[Headers.RetryCount], Is.EqualTo((options.MaxRetries - 1).Stringfy()));
        }
Beispiel #8
0
        public async Task HandleError_retries_if_retry_count_less_than_maxRetries([Frozen] RetryErrorFilterOptions options, [Frozen] IBusEngine engine, RetryErrorFilter sut, Exception error, NybusEventContext <FirstTestEvent> context, EventErrorDelegate <FirstTestEvent> next)
        {
            context.Message.Headers[Headers.RetryCount] = (options.MaxRetries - 2).Stringfy();

            await sut.HandleErrorAsync(context, error, next);

            Mock.Get(engine).Verify(p => p.SendMessageAsync(context.EventMessage));
        }
Beispiel #9
0
        public void Message_SentOn_is_attached_to_context(EventMessage <FirstTestEvent> eventMessage)
        {
            var sut = new NybusEventContext <FirstTestEvent>(eventMessage);

            Assert.That(sut.SentOn, Is.EqualTo(eventMessage.Headers.SentOn));
        }
Beispiel #10
0
        public void Message_correlationId_is_attached_to_context(EventMessage <FirstTestEvent> eventMessage)
        {
            var sut = new NybusEventContext <FirstTestEvent>(eventMessage);

            Assert.That(sut.CorrelationId, Is.EqualTo(eventMessage.Headers.CorrelationId));
        }
Beispiel #11
0
        public void Command_is_attached_to_context(EventMessage <FirstTestEvent> eventMessage)
        {
            var sut = new NybusEventContext <FirstTestEvent>(eventMessage);

            Assert.That(sut.Event, Is.SameAs(eventMessage.Event));
        }