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