From 2c6cf7dfad739b28e68bff5c66fcaa20d382fdd7 Mon Sep 17 00:00:00 2001 From: Renato Golia Date: Wed, 20 Feb 2019 12:54:24 +0100 Subject: [PATCH] Fix how MessageDescriptor is constructed (#76) --- src/Nybus.Abstractions/Message.cs | 2 +- .../InMemory/IEnvelopeService.cs | 2 +- .../MessageAttributeTests.cs | 56 +++++++++++++++++++ .../MessageAttributeTests.cs | 44 +++++++++++++++ 4 files changed, 102 insertions(+), 2 deletions(-) diff --git a/src/Nybus.Abstractions/Message.cs b/src/Nybus.Abstractions/Message.cs index 13e4bca..d4e3425 100644 --- a/src/Nybus.Abstractions/Message.cs +++ b/src/Nybus.Abstractions/Message.cs @@ -15,7 +15,7 @@ public abstract class Message public abstract Type Type { get; } - public MessageDescriptor Descriptor => new MessageDescriptor(Type); + public MessageDescriptor Descriptor => MessageDescriptor.CreateFromType(Type); public object Item { get; protected set; } } diff --git a/src/engines/Nybus.Engine.InMemory/InMemory/IEnvelopeService.cs b/src/engines/Nybus.Engine.InMemory/InMemory/IEnvelopeService.cs index b522f94..611109d 100644 --- a/src/engines/Nybus.Engine.InMemory/InMemory/IEnvelopeService.cs +++ b/src/engines/Nybus.Engine.InMemory/InMemory/IEnvelopeService.cs @@ -114,7 +114,7 @@ public class Envelope public Type Type { get; set; } - public MessageDescriptor Descriptor => new MessageDescriptor(Type); + public MessageDescriptor Descriptor => MessageDescriptor.CreateFromType(Type); public string Content { get; set; } } diff --git a/tests/integration/Tests.Integration.Nybus.Engine.InMemory/MessageAttributeTests.cs b/tests/integration/Tests.Integration.Nybus.Engine.InMemory/MessageAttributeTests.cs index 10b1353..9fe85e4 100644 --- a/tests/integration/Tests.Integration.Nybus.Engine.InMemory/MessageAttributeTests.cs +++ b/tests/integration/Tests.Integration.Nybus.Engine.InMemory/MessageAttributeTests.cs @@ -38,6 +38,34 @@ public async Task Commands_are_matched_via_MessageAttribute(ServiceCollection se Mock.Get(commandReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); } + [Test, AutoMoqData] + public async Task Outgoing_commands_are_marked_via_MessageAttribute(ServiceCollection services, AttributeTestCommand testCommand, CommandReceivedAsync commandReceived) + { + services.AddLogging(l => l.AddDebug()); + + services.AddNybus(nybus => + { + nybus.UseInMemoryBusEngine(); + + nybus.SubscribeToCommand(commandReceived); + }); + + var serviceProvider = services.BuildServiceProvider(); + + var host = serviceProvider.GetRequiredService(); + + var bus = serviceProvider.GetRequiredService(); + + await host.StartAsync(); + + await bus.InvokeCommandAsync(testCommand); + + await host.StopAsync(); + + Mock.Get(commandReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); + + } + [Test, AutoMoqData] public async Task Events_are_matched_via_MessageAttribute(ServiceCollection services, ThirdTestEvent testEvent, EventReceivedAsync eventReceived) { @@ -65,6 +93,34 @@ public async Task Events_are_matched_via_MessageAttribute(ServiceCollection serv Mock.Get(eventReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); } + [Test, AutoMoqData] + public async Task Outgoing_events_are_marked_via_MessageAttribute(ServiceCollection services, AttributeTestEvent testEvent, EventReceivedAsync eventReceived) + { + services.AddLogging(l => l.AddDebug()); + + services.AddNybus(nybus => + { + nybus.UseInMemoryBusEngine(); + + nybus.SubscribeToEvent(eventReceived); + }); + + var serviceProvider = services.BuildServiceProvider(); + + var host = serviceProvider.GetRequiredService(); + + var bus = serviceProvider.GetRequiredService(); + + await host.StartAsync(); + + await bus.RaiseEventAsync(testEvent); + + await host.StopAsync(); + + Mock.Get(eventReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); + + } + [Test, AutoMoqData] public async Task Commands_are_correctly_converted(ServiceCollection services, ThirdTestCommand testCommand, CommandReceivedAsync commandReceived) { diff --git a/tests/integration/Tests.Integration.Nybus.Engine.RabbitMq/MessageAttributeTests.cs b/tests/integration/Tests.Integration.Nybus.Engine.RabbitMq/MessageAttributeTests.cs index d58e290..0314f50 100644 --- a/tests/integration/Tests.Integration.Nybus.Engine.RabbitMq/MessageAttributeTests.cs +++ b/tests/integration/Tests.Integration.Nybus.Engine.RabbitMq/MessageAttributeTests.cs @@ -33,6 +33,28 @@ public async Task Commands_are_matched_via_MessageAttribute(FakeServer server, T Mock.Get(commandReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); } + [Test, AutoMoqData] + public async Task Outgoing_commands_are_marked_via_MessageAttribute(FakeServer server, AttributeTestCommand testCommand, CommandReceivedAsync commandReceived) + { + var host = CreateNybusHost(nybus => + { + nybus.SubscribeToCommand(commandReceived); + + nybus.UseRabbitMqBusEngine(rabbitMq => + { + rabbitMq.Configure(c => c.ConnectionFactory = server.CreateConnectionFactory()); + }); + }); + + await host.StartAsync(); + + await host.Bus.InvokeCommandAsync(testCommand); + + await host.StopAsync(); + + Mock.Get(commandReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); + } + [Test, AutoMoqData] public async Task Events_are_matched_via_MessageAttribute(FakeServer server, ThirdTestEvent testEvent, EventReceivedAsync eventReceived) { @@ -55,6 +77,28 @@ public async Task Events_are_matched_via_MessageAttribute(FakeServer server, Thi Mock.Get(eventReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); } + [Test, AutoMoqData] + public async Task Outgoing_Events_are_marked_via_MessageAttribute(FakeServer server, AttributeTestEvent testEvent, EventReceivedAsync eventReceived) + { + var host = CreateNybusHost(nybus => + { + nybus.SubscribeToEvent(eventReceived); + + nybus.UseRabbitMqBusEngine(rabbitMq => + { + rabbitMq.Configure(c => c.ConnectionFactory = server.CreateConnectionFactory()); + }); + }); + + await host.StartAsync(); + + await host.Bus.RaiseEventAsync(testEvent); + + await host.StopAsync(); + + Mock.Get(eventReceived).Verify(p => p(It.IsAny(), It.IsAny>()), Times.Once); + } + [Test, AutoMoqData] public async Task Commands_are_correctly_converted(FakeServer server, ThirdTestCommand testCommand, CommandReceivedAsync commandReceived) {