public async Task Get10ProductFromControllerLessThan1Second() { int count = 10; await InitializeDataAsync(count); var productsController = new ProductsController(_productRepository, _logger, _mapper); var requestModel = new GetProductsRequestModel(); requestModel.Id = "123"; requestModel.Timestamp = DateTime.UtcNow; requestModel.Products = new List <ProductModel>(); for (int i = 0; i < count; i++) { var data = _dataRow[i].Split(','); requestModel.Products.Add(new ProductModel { Id = long.Parse(data[0]) }); } Stopwatch sw = Stopwatch.StartNew(); JsonResult result = await productsController.GetProducts(requestModel); sw.Stop(); GetProductsResponseModel responseModel = ((GetProductsResponseModel)result.Data); Console.WriteLine(responseModel.Id + " == " + requestModel.Id); Assert.IsTrue(responseModel.Id == requestModel.Id); Console.WriteLine(responseModel.Products.Count + " == " + requestModel.Products.Count); Assert.IsTrue(responseModel.Products.Count == requestModel.Products.Count); Console.WriteLine(sw.Elapsed.TotalSeconds + " < " + 1); Assert.IsTrue(sw.Elapsed.TotalSeconds < 1); }
public async Task <IActionResult> GetAsync([FromQuery(Name = "currencyCode")] string currencyCode, CancellationToken token) { if (string.IsNullOrEmpty(currencyCode)) { currencyCode = DefaultCurrencyCode; } var productResponseModels = ProductRespository .GetProducts() .Select(product => new ProductResponseModel { Product = product }) .ToList(); foreach (var model in productResponseModels) { var product = model.Product; model.ConvertedPrice = product.Price * await _exchangeRateGetter.GetExchangeRateAsync( product.CurrencyCode, currencyCode, token); } var responseModel = new GetProductsResponseModel { Data = productResponseModels }; return(Ok(responseModel)); }