@Test public void testSetCustomLineItemShippingDetails() { final List<Address> addressList = createAddressArray(); withOrderOfCustomLineItems(client(),order -> { assertThat(order.getItemShippingAddresses()).isEmpty(); List<UpdateAction<Order>> addAddresses = addressList.stream().map(AddItemShippingAddress::of).collect(Collectors.toList()); Order updatedOrder = client().executeBlocking(OrderUpdateCommand.of(order,addAddresses )); assertThat(updatedOrder.getItemShippingAddresses()).hasSameSizeAs(addressList); assertThat(order.getCustomLineItems()).isNotEmpty(); final CustomLineItem firstLineItem = updatedOrder.getCustomLineItems().get(0); final Long quantity = firstLineItem.getQuantity(); final List<Address> addresses = updatedOrder.getItemShippingAddresses(); final Address firstAddress = addresses.get(0); final String firstAddressKey = firstAddress.getKey(); final ItemShippingDetailsDraft itemShippingDetailsDraft = ItemShippingDetailsDraftBuilder.of(Arrays.asList(ItemShippingTargetBuilder.of(firstAddressKey, firstLineItem.getQuantity()).build())).build(); final Order updatedOrder2 = client().executeBlocking(OrderUpdateCommand.of(updatedOrder, SetCustomLineItemShippingDetails.of(firstLineItem.getId(),itemShippingDetailsDraft))); final CustomLineItem updatedLineItem = updatedOrder2.getCustomLineItems().stream().filter(lineItem -> lineItem.getId().equals(firstLineItem.getId())).findAny().get(); assertThat(updatedLineItem.getShippingDetails().getTargets()).hasSize(1); assertThat(updatedLineItem.getShippingDetails().getTargets().get(0).getAddressKey()).isEqualTo(firstAddressKey); assertThat(updatedLineItem.getShippingDetails().getTargets().get(0).getQuantity()).isEqualTo(quantity); } ); }