Example #1
0
        public async Task CreateAsync_ForOrderWithoutDiscountShouldReturnProperProductsOrder()
        {
            // arrange
            var(productsWithCharmsOrderDto, products, charms, expected) = PrepareTestDataWithoutDiscount();
            productQueryService.Setup(s => s.GetRawByIdsAsync(It.IsAny <IEnumerable <int> >())).ReturnsAsync(products);
            charmQueryService.Setup(s => s.GetRawByIdsAsync(It.IsAny <List <Guid> >())).ReturnsAsync(charms);
            productCategoryDiscountQueryService.Setup(s => s.GetRawActiveAsync())
            .ReturnsAsync(new List <ProductCategoryDiscount>());
            productCategoryDiscountQueryService.Setup(s =>
                                                      s.ApplyDiscountsToProducts(It.IsAny <List <Product> >(), It.IsAny <List <ProductCategoryDiscount> >()))
            .Returns(new List <(int, ProductCategoryDiscount)>());

            var sut = new ProductOrderQueryService(productQueryService.Object, charmQueryService.Object,
                                                   productCategoryDiscountQueryService.Object);

            // act
            var result = await sut.CreateAsync(productsWithCharmsOrderDto);

            // assert
            var orderedResult = result.OrderBy(s => s.Product.Id).ToList();

            orderedResult.Should()
            .BeEquivalentTo(expected, s => s.Excluding(x => x.Id)
                            .Excluding(x => x.RuntimeType == typeof(Guid)));
        }
        public async Task When_Creates_Product_Order_Then_Gets_Products_By_Id_From_Product_Service(
            IList <ProductWithCharmsOrderDto> productWithCharmsOrder)
        {
            // Arrange
            productCategoryDiscountQueryServiceMock.Setup(x =>
                                                          x.ApplyDiscountsToProducts(It.IsAny <IList <Product> >(), It.IsAny <IList <ProductCategoryDiscount> >()))
            .Returns(new List <ApplyDiscountsToProductsResult>());
            var productIds = productWithCharmsOrder.Select(y => y.ProductId).ToList();

            // Act
            await sut.CreateAsync(productWithCharmsOrder);

            // Assert
            productQueryServiceMock.Verify(x => x.GetRawByIdsAsync(productIds), Times.Once);
        }