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); }
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); }
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); }
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); }