public async Task <OrderInsuranceResponseDto> GetOrderInsuranceAsync(OrderInsuranceRequestDto request) { var productsInsuranceTasks = new List <Task <ProductInsurance> >(); foreach (var productId in request.ProductsIds) { productsInsuranceTasks.Add(_productInsuranceService.GetProductInsuranceDetailsAsync(productId)); } var productsInsurance = await Task.WhenAll(productsInsuranceTasks); if (productsInsurance.IsEmpty()) { _logger.LogInformation($"Could not proceed with Get order insurance; products' insurance were null/empty."); return(null); } var order = new Order() { Products = productsInsurance.ToList() }; var totalInsurance = _orderInsuranceManager.CalculateInsurance(order); return(new OrderInsuranceResponseDto() { TotalInsuranceValue = totalInsurance }); }
public async Task <IActionResult> GetOrderInsuranceAsync([FromBody] OrderInsuranceRequestDto request) { var productsInsurance = await _orderInsuranceService.GetOrderInsuranceAsync(request); if (productsInsurance == null) { return(NoContent()); } return(Ok(productsInsurance)); }
public async Task GetOrderInsurance_ProductsLaptops_Above2000_ExpectedInsurance0(OrderInsuranceRequestDto request, float expectedOrderInsuranceValue) { var result = await _orderInsuranceController.GetOrderInsuranceAsync(request); Assert.IsType <OkObjectResult>(result); Assert.Equal( expected: expectedOrderInsuranceValue, actual: ((OrderInsuranceResponseDto)((OkObjectResult)result).Value).TotalInsuranceValue ); }
public async Task GetOrderInsurance_ProductsPriceBetween500And2000_ExpectedInsuranceEach1500Euros(OrderInsuranceRequestDto request, float expectedOrderInsuranceValue) { var result = await _orderInsuranceController.GetOrderInsuranceAsync(request); Assert.IsType <OkObjectResult>(result); Assert.Equal( expected: expectedOrderInsuranceValue, actual: ((OrderInsuranceResponseDto)((OkObjectResult)result).Value).TotalInsuranceValue ); }