Example #1
0
        /// <summary>
        /// Event invocator for receiving a message
        /// </summary>
        protected virtual void OnEventMessageReceived(EventMessage eventmessage)
        {
            EventMessageReceivedEventArgs args = new EventMessageReceivedEventArgs
            {
                QueueName        = QueueName,
                TopicExpressions = Topics
            };

            EventMessageReceived?.Invoke(eventmessage, args);
        }
        public void EventMessageReceivedIsFiredOnIncomingMessageWithProperValues()
        {
            // Arrange
            const string queueName       = "test.queue";
            const string topicExpression = "TestTopic";

            var testContext = new TestBusContext();
            var hostBuilder = new MicroserviceHostBuilder()
                              .WithBusContext(testContext)
                              .AddEventListener <EventListenerDummy>()
                              .WithQueueName(queueName);

            using var host = hostBuilder.CreateHost();

            host.Start();

            EventMessage receivedEventMessage = null;
            EventMessageReceivedEventArgs receivedEventArgs = null;

            host.EventMessageReceived += (eventMessage, args) =>
            {
                receivedEventMessage = eventMessage;
                receivedEventArgs    = args;
            };

            // Act
            var message = new DummyEvent(topicExpression);

            new EventPublisher(testContext).Publish(message);

            Thread.Sleep(WaitTime);

            // Assert
            Assert.AreEqual(message.Type, receivedEventMessage.EventType);
            Assert.AreEqual(message.Id, receivedEventMessage.CorrelationId);
            Assert.AreEqual(message.Timestamp, receivedEventMessage.Timestamp);

            Assert.AreEqual(queueName, receivedEventArgs.QueueName);
            Assert.AreEqual(1, receivedEventArgs.TopicExpressions.Count());
            Assert.AreEqual(topicExpression, receivedEventArgs.TopicExpressions.Single());
        }