@Test public void setParcelTrackingData() 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))); final Parcel parcel = orderWithDelivery.getShippingInfo().getDeliveries().get(0).getParcels().get(0); final Order updatedOrder = client().executeBlocking(OrderUpdateCommand.of(orderWithDelivery, SetParcelTrackingData.of(parcel.getId(), OTHER_TRACKING_DATA))); final Parcel updatedParcel = updatedOrder.getShippingInfo().getDeliveries().get(0).getParcels().get(0); assertThat(updatedParcel.getTrackingData()).isEqualTo(OTHER_TRACKING_DATA); //you can observe a message final Query<ParcelTrackingDataUpdatedMessage> messageQuery = MessageQuery.of() .withPredicates(m -> m.resource().is(order)) .forMessageType(ParcelTrackingDataUpdatedMessage.MESSAGE_HINT); assertEventually(() -> { final Optional<ParcelTrackingDataUpdatedMessage> parcelTrackingDataUpdatedMessageOptional = client().executeBlocking(messageQuery).head(); assertThat(parcelTrackingDataUpdatedMessageOptional).isPresent(); final ParcelTrackingDataUpdatedMessage parcelTrackingDataUpdatedMessage = parcelTrackingDataUpdatedMessageOptional.get(); assertThat(parcelTrackingDataUpdatedMessage.getParcelId()).isEqualTo(parcel.getId()); assertThat(parcelTrackingDataUpdatedMessage.getTrackingData()).isEqualTo(OTHER_TRACKING_DATA); }); }); }