@Test public void removeDelivery() throws Exception { withOrder(client(), order -> { final List<ParcelDraft> parcels = asList(ParcelDraft.of(SMALL_PARCEL_MEASUREMENTS, TRACKING_DATA)); final LineItem lineItem = order.getLineItems().get(0); final long availableItemsToShip = 1; final List<DeliveryItem> initialItems = asList(DeliveryItem.of(lineItem, availableItemsToShip)); final Order orderWithDelivery = client().executeBlocking(OrderUpdateCommand.of(order, AddDelivery.of(initialItems, parcels))); assertThat(orderWithDelivery.getShippingInfo().getDeliveries()).hasSize(1); final Delivery delivery = orderWithDelivery.getShippingInfo().getDeliveries().get(0); final Order orderWithoutDelivery = client().executeBlocking(OrderUpdateCommand.of(orderWithDelivery, RemoveDelivery.of(delivery.getId()))); assertThat(orderWithoutDelivery.getShippingInfo().getDeliveries()).isEmpty(); //you can observe a message final Query<DeliveryRemovedMessage> messageQuery = MessageQuery.of() .withPredicates(m -> m.resource().is(order)) .forMessageType(DeliveryRemovedMessage.MESSAGE_HINT); assertEventually(() -> { final Optional<DeliveryRemovedMessage> deliveryRemovedMessageOptional = client().executeBlocking(messageQuery).head(); assertThat(deliveryRemovedMessageOptional).isPresent(); final DeliveryRemovedMessage deliveryRemovedMessage = deliveryRemovedMessageOptional.get(); final Delivery deliveryFromMessage = deliveryRemovedMessage.getDelivery(); assertThat(deliveryFromMessage.getId()).isEqualTo(delivery.getId()); assertThat(deliveryFromMessage.getCreatedAt()).isEqualTo(delivery.getCreatedAt()); }); }); }