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());
        }