public async Task ShouldSendAllMessagesToASingleMessageHandler() { // Given int expectedMessageHandlerInvocationCount = 5; int actualMessageHandlerInvocationCount = 0; IMessageHandlerResolver resolver = CreateSingleMessageHandlerResolver(registration => { registration.Register <TestMessage>((message, ct) => { actualMessageHandlerInvocationCount++; return(Task.CompletedTask); }); }); MessageDelegator messageDelegator = CreateMessageDelegator(resolver); // Instance messages. IEnumerable <TestMessage> messages = Enumerable.Range(0, expectedMessageHandlerInvocationCount).Select(i => new TestMessage()); // When await messageDelegator.SendAllAsync(messages); // Then actualMessageHandlerInvocationCount.Should().Be(expectedMessageHandlerInvocationCount); }
public void ShouldThrowWhenNullIsProvidedAsConstructorParameter() { // Given Action action = () => { // When MessageDelegator messageDelegator = new MessageDelegator(null); }; // Then action.ShouldThrow <ArgumentNullException>("because MessageDelegator requires an instance if IMessageHandlerResolver."); }
public void ShouldThrowWhenNullIsProvided() { // Given IMessageHandlerResolver resolver = CreateSingleMessageHandlerResolver(); MessageDelegator messageDelegator = CreateMessageDelegator(resolver); Func <Task> action = () => { // When return(messageDelegator.SendAsync <TestMessage>(null)); }; // Then action.ShouldThrow <ArgumentNullException>(); }
public void ShouldPropagateExceptionFromHandler() { // Given IMessageHandlerResolver resolver = CreateSingleMessageHandlerResolver(registration => { registration.Register <TestMessage>((message, cancellationToken) => { return(Task.FromException(new Exception("This exception is expected."))); }); }); MessageDelegator messageDelegator = CreateMessageDelegator(resolver); Func <Task> action = () => { // When return(messageDelegator.SendAsync <TestMessage>(new TestMessage())); }; // Then action.ShouldThrow <Exception>(); }
public async Task ShouldSendMessageToASingleMessageHandler() { // Given bool messageHandlerWasInvoked = false; IMessageHandlerResolver resolver = CreateSingleMessageHandlerResolver(registration => { registration.Register <TestMessage>((message, ct) => { messageHandlerWasInvoked = true; return(Task.CompletedTask); }); }); MessageDelegator messageDelegator = CreateMessageDelegator(resolver); // When await messageDelegator.SendAsync(new TestMessage()); // Then messageHandlerWasInvoked.Should().BeTrue(); }
public async Task ShouldSendMessageToMultipleMessageHandlers() { // Given int expectedNumberOfHandlers = 10; int actualMessageHandlerInvocationCount = 0; IMessageHandlerResolver resolver = CreateMultiMessageHandlerResolver(registration => { // Register 10 handlers. for (int i = 0; i < expectedNumberOfHandlers; i++) { registration.Register <TestMessage>((message, ct) => { actualMessageHandlerInvocationCount++; return(Task.CompletedTask); }); } }); MessageDelegator messageDelegator = CreateMessageDelegator(resolver); // When await messageDelegator.SendAsync(new TestMessage()); // Then actualMessageHandlerInvocationCount.Should().Be(expectedNumberOfHandlers); }