public async Task IdOfNonexistentCustomer_UpdateCustomerOrder_ReturnNotFound() { const int customerId = -1; const int orderId = 7; var orderModel = new OrderModelBase(); var exception = await Assert.ThrowsAsync <ProblemDetailsException>(() => _customerController.UpdateCustomerOrder(customerId, orderId, orderModel)); Assert.Equal(StatusCodes.Status404NotFound, exception.Details.Status); Assert.Contains("customer", exception.Details.Title, StringComparison.OrdinalIgnoreCase); }
public async Task FailedToSaveUpdatedOrder_UpdateCustomerOrder_ReturnBadRequest() { const int customerId = 4; const int orderId = 2; var orderModel = new OrderModelBase { RequiredDate = DateTimeOffset.Now }; _customerService.Setup(c => c.GetById(customerId)).ReturnsAsync(new Customer()); _customerService.Setup(c => c.GetEntityById(customerId, orderId)) .ReturnsAsync(new Order()); var response = await _customerController.UpdateCustomerOrder(customerId, orderId, orderModel); Assert.IsType <ActionResult <OrderResponseModel> >(response); Assert.IsType <BadRequestResult>(response.Result); _customerService.Verify(c => c.UpdateEntity(customerId, It.IsAny <Order>())); }
public async Task OrderWithShippedDate_UpdateCustomerOrder_ReturnBadRequest() { const int customerId = 14; const int orderId = 5; var orderModel = new OrderModelBase { RequiredDate = DateTimeOffset.Now }; var mockOrder = new Order { ShippedDate = DateTimeOffset.UtcNow }; _customerService.Setup(c => c.GetById(customerId)).ReturnsAsync(new Customer()); _customerService.Setup(c => c.GetEntityById(customerId, orderId)).ReturnsAsync(mockOrder); var response = await _customerController.UpdateCustomerOrder(customerId, orderId, orderModel); Assert.IsType <ActionResult <OrderResponseModel> >(response); var result = Assert.IsType <BadRequestObjectResult>(response.Result); Assert.NotNull(result.Value); }
public async Task <ActionResult <OrderResponseModel> > UpdateCustomerOrder(int customerId, int orderId, OrderModelBase orderRequest) { await DoesCustomerExist(customerId); var order = await GetOrder(customerId, orderId); if (order.ShippedDate != null) { return(BadRequest("Order's Required data cannot be updated as " + $"it has already been scheduled to ship on {order.ShippedDate}")); } order.RequiredDate = orderRequest.RequiredDate; _customerService.UpdateEntity(customerId, order); if (await _customerService.IsSavedToDb()) { return(Ok(_mapper.Map <OrderResponseModel>(order))); } return(BadRequest()); }