public SearchProductsResult Search(string searchText, int page) { ApiSearchResult apiSearchResult = _apiSearchService.Search(searchText, page); List <string> listOfSymbols = apiSearchResult.ProductList.Select(s => s.Symbol).ToList(); ApiPriceResult <ApiProductPriceAndStock> productPrices = _apiPricesAndStocksProvider.GetPricesAndStocks(listOfSymbols); List <Product> products = (from apiProduct in apiSearchResult.ProductList join apiProductPriceAndStock in productPrices.ProductList on apiProduct.Symbol equals apiProductPriceAndStock.Symbol select new Product( apiProduct.Symbol, apiProduct.Producer, apiProduct.Description, apiProduct.Category, apiProduct.Unit, apiProduct.Photo, apiProduct.Thumbnail, apiProductPriceAndStock.Amount, new ProductPrice( apiProductPriceAndStock.VatRate, apiProductPriceAndStock.VatType, apiProductPriceAndStock.PriceList.Select(p => new PriceOffer( p.Amount, p.PriceValue, p.Special)).ToList()))) .ToList(); int pageCount = (int)Math.Ceiling(apiSearchResult.Amount / 20.0); return(new SearchProductsResult(productPrices.PriceType, productPrices.Currency, products, pageCount)); }
public void Should_call_api_search_service_if_barcode_is_new() { var barcode = new BarCode() { New = true }; A.CallTo(() => this.barCodes.Get("", "", 0)).Returns(null); A.CallTo(() => this.barCodes.Create("", "", 0)).Returns(barcode); A.CallTo(() => this.apiSearchService.Search("", "")).Returns(Enumerable.Empty <ApiSearchHit>()); barCodeController.Get("", "", 0); A.CallTo(() => apiSearchService.Search("", "")).MustHaveHappened(); }