Exemple #1
0
        public async Task WithServiceBusRouting_IgnoreMissingMembers_ResultsInDifferentMessageHandler(AdditionalMemberHandling additionalMemberHandling)
        {
            // Arrange
            var services         = new ServiceCollection();
            var collection       = new ServiceBusMessageHandlerCollection(services);
            var messageHandlerV1 = new OrderV1AzureServiceBusMessageHandler();
            var messageHandlerV2 = new OrderV2AzureServiceBusMessageHandler();

            collection.WithServiceBusMessageHandler <OrderV1AzureServiceBusMessageHandler, Order>(provider => messageHandlerV1)
            .WithServiceBusMessageHandler <OrderV2AzureServiceBusMessageHandler, OrderV2>(provider => messageHandlerV2);

            // Act
            services.AddServiceBusMessageRouting(options => options.Deserialization.AdditionalMembers = additionalMemberHandling);

            // Assert
            IServiceProvider serviceProvider = services.BuildServiceProvider();
            var router = serviceProvider.GetRequiredService <IAzureServiceBusMessageRouter>();

            OrderV2 orderV2 = OrderV2Generator.Generate();
            ServiceBusReceivedMessage     message = orderV2.AsServiceBusReceivedMessage();
            AzureServiceBusMessageContext context = AzureServiceBusMessageContextFactory.Generate();
            var correlationInfo = new MessageCorrelationInfo("operation-id", "transaction-id");
            await router.RouteMessageAsync(message, context, correlationInfo, CancellationToken.None);

            Assert.Equal(additionalMemberHandling is AdditionalMemberHandling.Error, messageHandlerV2.IsProcessed);
            Assert.Equal(additionalMemberHandling is AdditionalMemberHandling.Ignore, messageHandlerV1.IsProcessed);
        }
        public async Task WithMessageRouting_WithIgnoreMissingMembers_GoesThroughDifferentMessageHandler(AdditionalMemberHandling additionalMemberHandling)
        {
            // Arrange
            var services         = new ServiceCollection();
            var collection       = new MessageHandlerCollection(services);
            var messageHandlerV1 = new OrderV1MessageHandler();
            var messageHandlerV2 = new OrderV2MessageHandler();

            collection.WithMessageHandler <OrderV1MessageHandler, Order>(provider => messageHandlerV1)
            .WithMessageHandler <OrderV2MessageHandler, OrderV2>(provider => messageHandlerV2);

            // Act
            services.AddMessageRouting(options => options.Deserialization.AdditionalMembers = additionalMemberHandling);

            // Assert
            IServiceProvider serviceProvider = services.BuildServiceProvider();
            var router = serviceProvider.GetRequiredService <IMessageRouter>();

            OrderV2 order           = OrderV2Generator.Generate();
            var     context         = new MessageContext("message-id", new Dictionary <string, object>());
            var     correlationInfo = new MessageCorrelationInfo("operation-id", "transaction-id");
            string  json            = JsonConvert.SerializeObject(order);

            await router.RouteMessageAsync(json, context, correlationInfo, CancellationToken.None);

            Assert.Equal(additionalMemberHandling is AdditionalMemberHandling.Ignore, messageHandlerV1.IsProcessed);
            Assert.Equal(additionalMemberHandling is AdditionalMemberHandling.Error, messageHandlerV2.IsProcessed);
        }
Exemple #3
0
        public void TestCompareOrderVsOrderV2_Example3()
        {
            // Arrange
            List <double> itemPriceList = new List <double> {
                80.0, 115.0, 220.0, 12.0, 20.0, 75.0, 44.0, 15.0, 49.0
            };
            Order   theOrder       = new Order(itemPriceList);
            OrderV2 theOrderV2     = new OrderV2(itemPriceList);
            double  expectedResult = theOrder.TotalOrderPrice;

            // Act
            double result = theOrderV2.TotalOrderPrice;

            // Assert
            Assert.AreEqual(expectedResult, result, 0.01);
        }