private async Task <List <ProductDto> > GetTop5ProductsSoldFromOrdersInternal(CollectionOfMerchantOrderResponse collectionOfMerchantOrderResponse) { var products = collectionOfMerchantOrderResponse.GetTop5ProductsSold(); var productsResponse = await channelEngineHttpClient.GetProducts(products.Select(p => p.MerchantProductNo).ToList()); return(MapProductsResponseToProductDtos(productsResponse, products)); }
public void GetGetTop5ProductsSold_Should_ReturnTop5ProductsSold() { //Arrange var expected = new ProductDtosBuilder() .WithProductDtoIs("ProductNo1", 200) .WithProductDtoIs("ProductNo2", 150) .WithProductDtoIs("ProductNo3", 50) .Build(); var lines1 = new MerchantOrderLineResponsesBuilder() .WithMerchantOrderLineResponseIs("ProductNo3", 50) .WithMerchantOrderLineResponseIs("ProductNo2", 100) .WithMerchantOrderLineResponseIs("ProductNo1", 50) .Build(); var lines2 = new MerchantOrderLineResponsesBuilder() .WithMerchantOrderLineResponseIs("ProductNo1", 50) .WithMerchantOrderLineResponseIs("ProductNo2", 50) .WithMerchantOrderLineResponseIs("ProductNo1", 100) .Build(); var merchantOrderResponses = new MerchantOrderResponsesBuilder() .WithmerchantOrderResponseIs(lines1) .WithmerchantOrderResponseIs(lines2) .Build(); var sut = new CollectionOfMerchantOrderResponse() { Content = merchantOrderResponses }; //Act var result = sut.GetTop5ProductsSold(); //Assert result.Should().BeEquivalentTo(expected, option => option.WithStrictOrdering()); }