public async Task <IActionResult> ProcessOrder(IncommingOrderDto order) { try { var validationResult = PayloadValidator.ValidateOrderDetails(order); if (!validationResult.Item1) { return(BadRequest(string.Join(", ", validationResult.Item2))); } var paymentResult = await PaymentProcessor.ProcessPayment(_clientFactory, order); if (!paymentResult.Item1) { return(BadRequest(paymentResult.Item2)); } var result = await _orders.AddNewOrderDetails(order); if (!result.Success) { BadRequest(result.Message); } var uri = $"https://localhost:44327/api/billing/order/{result.SingleOrder.OrderNumber}"; return(Created(uri, DtoMapper.MapResultDtoToCreatedOrderDto(result))); } catch (Exception ex) { return(StatusCode(500, ex.Message)); } }
public void MapResultDtoToCreatedOrderDto_ShouldReturnCreatedOrderDtoType() { var result = new ResultDto { SingleOrder = new ReadOrderDto { OrderNumber = 5, UserId = 456, PayableAmount = 99.12, PaymentGateWay = "Seb", Description = "This is order number 5" }, Message = "OK" }; var actual = DtoMapper.MapResultDtoToCreatedOrderDto(result); Assert.IsType <CreatedOrderDto>(actual); }
public void MapResultDtoToCreatedOrderDto_ShouldReturnCreatedOrderDto() { var resultDto = new ResultDto { SingleOrder = new ReadOrderDto { OrderNumber = 5, UserId = 456, PayableAmount = 99.12, PaymentGateWay = "Seb", Description = "This is order number 5" }, Message = "OK" }; var createdOrderDto = new CreatedOrderDto { Message = resultDto.Message, OrderDetails = resultDto.SingleOrder }; var expected = JsonConvert.SerializeObject(createdOrderDto); var result = DtoMapper.MapResultDtoToCreatedOrderDto(resultDto); var actual = JsonConvert.SerializeObject(result); Assert.Equal(expected, actual); }