Example #1
0
        public async Task InvokeAsync_ScopedHandler_ScopeCreatedAndHandlerInvoked()
        {
            var callbackOneHandlerOne = new CallbackOneHandlerOneAsync();
            var serviceProvider       = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddFakeLogger()
                .AddSilverback()
                .WithConnectionToMessageBroker(options => options.AddBroker <TestBroker>())
                .AddScopedBrokerCallbackHandler(_ => callbackOneHandlerOne));

            var invoker = serviceProvider.GetRequiredService <IBrokerCallbacksInvoker>();

            await invoker.InvokeAsync <ICallbackOneHandlerAsync>(handler => handler.HandleAsync());

            callbackOneHandlerOne.CallCount.Should().Be(1);
        }
Example #2
0
        public async Task InvokeAsync_DuringApplicationShutdown_CallbackInvoked()
        {
            var callbackOneHandlerOne   = new CallbackOneHandlerOneAsync();
            var hostApplicationLifetime = new FakeHostApplicationLifetime();

            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddFakeLogger()
                .AddSilverback()
                .WithConnectionToMessageBroker(options => options.AddBroker <TestBroker>())
                .AddSingletonBrokerCallbackHandler(callbackOneHandlerOne),
                hostApplicationLifetime);

            hostApplicationLifetime.TriggerApplicationStopping();

            var invoker = serviceProvider.GetRequiredService <IBrokerCallbacksInvoker>();
            await invoker.InvokeAsync <ICallbackOneHandlerAsync>(handler => handler.HandleAsync());

            callbackOneHandlerOne.CallCount.Should().Be(1);
        }
Example #3
0
        public async Task InvokeAsync_WithServiceProvider_HandlerResolvedUsingSpecifiedProvider()
        {
            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddFakeLogger()
                .AddSilverback()
                .WithConnectionToMessageBroker(options => options.AddBroker <TestBroker>()));

            var callbackOneHandlerOne     = new CallbackOneHandlerOneAsync();
            var substituteServiceProvider = Substitute.For <IServiceProvider>();

            substituteServiceProvider
            .GetService(typeof(IEnumerable <IBrokerCallback>))
            .Returns(new[] { callbackOneHandlerOne });

            var invoker = serviceProvider.GetRequiredService <IBrokerCallbacksInvoker>();

            await invoker.InvokeAsync <ICallbackOneHandlerAsync>(
                handler => handler.HandleAsync(),
                substituteServiceProvider);

            callbackOneHandlerOne.CallCount.Should().Be(1);
        }
Example #4
0
        public async Task InvokeAsync_SomeHandlers_MatchingHandlersInvoked()
        {
            var callbackOneHandlerOne = new CallbackOneHandlerOneAsync();
            var callbackOneHandlerTwo = new CallbackOneHandlerTwoAsync();
            var callbackTwoHandlerOne = new CallbackTwoHandlerOneAsync();

            var serviceProvider = ServiceProviderHelper.GetServiceProvider(
                services => services
                .AddFakeLogger()
                .AddSilverback()
                .WithConnectionToMessageBroker(options => options.AddBroker <TestBroker>())
                .AddSingletonBrokerCallbackHandler(callbackOneHandlerOne)
                .AddSingletonBrokerCallbackHandler(callbackOneHandlerTwo)
                .AddSingletonBrokerCallbackHandler(callbackTwoHandlerOne));

            var invoker = serviceProvider.GetRequiredService <IBrokerCallbacksInvoker>();

            await invoker.InvokeAsync <ICallbackOneHandlerAsync>(handler => handler.HandleAsync());

            callbackOneHandlerOne.CallCount.Should().Be(1);
            callbackOneHandlerTwo.CallCount.Should().Be(1);
            callbackTwoHandlerOne.CallCount.Should().Be(0);
        }