/** Creates a command to update a Order selected by its orderNumber using one update action. @param orderNumber the orderNumber of the Order to update, see {@link Order#getOrderNumber()} @param version the current version of the Order, see {@link Order#getVersion()} @param updateAction the update to perform @return the update command for Order */ static OrderUpdateCommand ofOrderNumber(final String orderNumber, final Long version, final UpdateAction<Order> updateAction) { return ofOrderNumber(orderNumber, version, Collections.singletonList(updateAction)); }
@Test public void changeOrderStateByOrderNumber() throws Exception { withOrder(client(), order -> { assertThat(order.getOrderState()).isEqualTo(OrderState.OPEN); final String orderNumber = randomString(); final Order orderWithOrderNumber = client().executeBlocking(OrderUpdateCommand.of(order, SetOrderNumber.of(orderNumber))); final Order updatedOrder = client().executeBlocking(OrderUpdateCommand.ofOrderNumber(orderNumber, orderWithOrderNumber.getVersion(), ChangeOrderState.of(OrderState.COMPLETE))); assertThat(updatedOrder.getOrderState()).isEqualTo(OrderState.COMPLETE); return updatedOrder; }); }