コード例 #1
0
        public async Task ProductPriceHandlerTest_Check_FinalPrice(string requestFileName, string responseFileName)
        {
            var requestData = System.IO.File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestData", "Request", requestFileName));

            _request = JsonConvert.DeserializeObject <OrderPromotionRequest>(requestData);
            var responseData = System.IO.File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestData", "Response", responseFileName));

            _response = JsonConvert.DeserializeObject <List <ProductPriceResponse> >(responseData);
            Order     order     = new Order();
            Promotion promotion = new Promotion();

            _promotion.GetTotalPrice(order, promotion).Returns(130);
            var handler = Substitute.For <ProductPriceHandler>(_delegatePromotionType);
            var result  = await handler.Handle(_request, new CancellationToken());

            Assert.Equal(result[0].FinalPrice, _response[0].FinalPrice);
        }
コード例 #2
0
        public async Task <List <ProductPriceResponse> > Handle(OrderPromotionRequest request, CancellationToken cancellationToken)
        {
            await Task.Delay(0);

            List <ProductPriceResponse> productPriceResponses = new List <ProductPriceResponse>();

            foreach (Order ord in request.Orders)
            {
                List <decimal> promoprices = request.Promotions
                                             .Select(promo => _promotion.GetTotalPrice(ord, promo))
                                             .ToList();
                decimal origprice  = ord.Products.Sum(x => x.Price);
                decimal promoprice = promoprices.Sum();
                productPriceResponses.Add(new ProductPriceResponse {
                    OrderID = ord.OrderID, OriginalPrice = origprice, Discount = promoprice, FinalPrice = origprice - promoprice
                });
            }
            return(productPriceResponses);
        }