@Test public void testRemoveAddressesToCartUpdateAction() { withFilledCartAndMultipleAddresses(client(), cart -> { final List<Address> addresses = cart.getItemShippingAddresses(); final String addressKey = addresses.get(0).getKey(); final Cart updatedCart = client().executeBlocking(CartUpdateCommand.of(cart, RemoveItemShippingAddress.of(addressKey))); assertThat(updatedCart.getItemShippingAddresses()).hasSize(addresses.size() - 1); assertThat(updatedCart.getItemShippingAddresses().stream().filter(address -> addressKey.equals(address.getKey())).collect(Collectors.toList())).isEmpty(); }); }
@Test public void testUpdateAddressesToCartUpdateAction() { withFilledCartAndMultipleAddresses(client(), cart -> { final List<Address> addresses = cart.getItemShippingAddresses(); final Address firstAddress = addresses.get(0); assertThat(firstAddress.getCountry()).isNotEqualByComparingTo(CountryCode.CA); final String firstAddressKey = firstAddress.getKey(); final Address updatedAddress = Address.of(CountryCode.CA).withKey(firstAddressKey); final Cart updatedCart = client().executeBlocking(CartUpdateCommand.of(cart, UpdateItemShippingAddress.of(updatedAddress))); List<Address> newAddresses = updatedCart.getItemShippingAddresses().stream().filter(address -> address.getKey().equals(firstAddressKey)).collect(Collectors.toList()); assertThat(newAddresses).hasSize(1); assertThat(newAddresses.get(0).getCountry()).isEqualByComparingTo(CountryCode.CA); }); }
@Test public void testRemoveAddressesToOrderUpdateAction() { withFilledCartAndMultipleAddresses(client(), cart -> { withCustomer(client(),customer -> { withOrder(client(),customer,cart,order -> { final List<Address> addresses = order.getItemShippingAddresses(); final String addressKey = addresses.get(0).getKey(); final Order updatedOrder = client().executeBlocking(OrderUpdateCommand.of(order, RemoveItemShippingAddress.of(addressKey))); assertThat(updatedOrder.getItemShippingAddresses()).hasSize(addresses.size() - 1); assertThat(updatedOrder.getItemShippingAddresses().stream().filter(address -> addressKey.equals(address.getKey())).collect(Collectors.toList())).isEmpty(); return updatedOrder; }); }); }); }
@Test public void testApplyDeltaToLineItemShippingDetailsTargets() { withFilledCartAndMultipleAddresses(client(), cart -> { final LineItem firstLineItem = cart.getLineItems().get(0); final List<Address> addresses = cart.getItemShippingAddresses(); final Address firstAddress = addresses.get(0); final String firstAddressKey = firstAddress.getKey(); final Cart updatedCart = client().executeBlocking(CartUpdateCommand.of(cart, ApplyDeltaToLineItemShippingDetailsTargets.of(firstLineItem.getId(), Arrays.asList(ItemShippingTargetBuilder.of(firstAddressKey,6L ).build())))); final LineItem updatedLineItem = updatedCart.getLineItems().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(6); }); }
@Test public void testSetLineItemShippingDetails() { withFilledCartAndMultipleAddresses(client(), cart -> { final LineItem firstLineItem = cart.getLineItems().get(0); final List<Address> addresses = cart.getItemShippingAddresses(); final Address firstAddress = addresses.get(0); final String firstAddressKey = firstAddress.getKey(); final ItemShippingDetailsDraft itemShippingDetailsDraft = ItemShippingDetailsDraftBuilder.of(Arrays.asList(ItemShippingTargetBuilder.of(firstAddressKey, 2L).build())).build(); final Cart updatedCart = client().executeBlocking(CartUpdateCommand.of(cart, SetLineItemShippingDetails.of(firstLineItem.getId(),itemShippingDetailsDraft))); final LineItem updatedLineItem = updatedCart.getLineItems().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(2); }); }
@Test public void testUpdateAddressesToOrderUpdateAction() { withFilledCartAndMultipleAddresses(client(), cart -> { withCustomer(client(),customer -> { withOrder(client(),customer,cart,order -> { final List<Address> addresses = order.getItemShippingAddresses(); final Address firstAddress = addresses.get(0); assertThat(firstAddress.getCountry()).isNotEqualByComparingTo(CountryCode.CA); final String firstAddressKey = firstAddress.getKey(); final Address updatedAddress = Address.of(CountryCode.CA).withKey(firstAddressKey); final Order updatedOrder= client().executeBlocking(OrderUpdateCommand.of(order, UpdateItemShippingAddress.of(updatedAddress))); List<Address> newAddresses = updatedOrder.getItemShippingAddresses().stream().filter(address -> address.getKey().equals(firstAddressKey)).collect(Collectors.toList()); assertThat(newAddresses).hasSize(1); assertThat(newAddresses.get(0).getCountry()).isEqualByComparingTo(CountryCode.CA); return updatedOrder; }); }); }); }
@Test public void testItemShippingDetailsConvenienceMethod(){ withFilledCartAndMultipleAddresses(client(), cart -> { final LineItem firstLineItem = cart.getLineItems().get(0); final List<Address> addresses = cart.getItemShippingAddresses(); final Address firstAddress = addresses.get(0); final String firstAddressKey = firstAddress.getKey(); final ItemShippingDetailsDraft itemShippingDetailsDraft = ItemShippingDetailsDraftBuilder.of(Arrays.asList(ItemShippingTargetBuilder.of(firstAddressKey, 2L).build())).build(); final Cart updatedCart = client().executeBlocking(CartUpdateCommand.of(cart, SetLineItemShippingDetails.of(firstLineItem.getId(), itemShippingDetailsDraft))); final LineItem updatedLineItem = updatedCart.getLineItems().stream().filter(lineItem -> lineItem.getId().equals(firstLineItem.getId())).findAny().get(); assertThat(updatedLineItem.getShippingDetails().getTargetsMap().get(firstAddressKey)).isNotNull(); }); }
@Test public void testRemoveLineItemDetails(){ withFilledCartAndMultipleAddresses(client(), cart -> { final LineItem firstLineItem = cart.getLineItems().get(0); final List<Address> addresses = cart.getItemShippingAddresses(); final Address firstAddress = addresses.get(0); final String firstAddressKey = firstAddress.getKey(); final ItemShippingDetailsDraft itemShippingDetailsDraft = ItemShippingDetailsDraftBuilder.of(Arrays.asList(ItemShippingTargetBuilder.of(firstAddressKey, 2L).build())).build(); final Cart updatedCart = client().executeBlocking(CartUpdateCommand.of(cart, SetLineItemShippingDetails.of(firstLineItem.getId(), itemShippingDetailsDraft))); final LineItem updatedLineItem = updatedCart.getLineItems().stream().filter(lineItem -> lineItem.getId().equals(firstLineItem.getId())).findAny().get(); assertThat(updatedLineItem.getShippingDetails().getTargetsMap().get(firstAddressKey)).isNotNull(); final Cart updatedCart2 = client().executeBlocking(CartUpdateCommand.of(updatedCart, RemoveLineItem.of(firstLineItem.getId(), 1L).withShippingDetailsToRemove(itemShippingDetailsDraft))); final LineItem updatedLineItem2 = updatedCart2.getLineItems().stream().filter(lineItem -> lineItem.getId().equals(firstLineItem.getId())).findAny().get(); //Check if line item details is removed assertThat(updatedLineItem2.getShippingDetails().getTargetsMap().get(firstAddressKey)).isNull(); }); }
@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); } ); }
@Test public void testSetLineItemShippingDetails() { withFilledCartAndMultipleAddresses(client(), cart -> { withCustomer(client(),customer -> { withOrder(client(),customer,cart,order -> { final LineItem firstLineItem = order.getLineItems().get(0); final Long quantity = firstLineItem.getQuantity(); final List<Address> addresses = order.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 updatedOrder = client().executeBlocking(OrderUpdateCommand.of(order, SetLineItemShippingDetails.of(firstLineItem.getId(),itemShippingDetailsDraft))); final LineItem updatedLineItem = updatedOrder.getLineItems().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); return updatedOrder; }); }); }); }
@Test public void testDraftWithMultipleAddresses() { final List<Address> itemShippingAddresses = createAddressArray(); final CartDraft draft = CartDraftBuilder.of(DefaultCurrencyUnits.EUR) .country(CountryCode.DE) .itemShippingAddresses(itemShippingAddresses) .build(); withTaxedProduct(client(), product -> { withCartDraft(client(), draft, cart -> { Assertions.assertThat(cart.getItemShippingAddresses()).containsAll(itemShippingAddresses); final String addressKey = cart.getItemShippingAddresses().get(0).getKey(); final ItemShippingDetailsDraft itemShippingDetailsDraft = ItemShippingDetailsDraftBuilder.of(Arrays.asList(ItemShippingTargetBuilder.of(addressKey, 2L).build())).build(); final int master_variant_id = product.getMasterData().getStaged().getMasterVariant().getId(); final LineItemDraft lineItemDraft = LineItemDraft.of(product, master_variant_id, 25).withShippingDetails(itemShippingDetailsDraft); final Cart updatedCart = client().executeBlocking(CartUpdateCommand.of(cart, AddLineItem.of(lineItemDraft))); PagedQueryResult<Cart> result = client().executeBlocking(CartQuery.of().plusPredicates(CartQueryModel.of().itemShippingAddresses().address().country().is(CountryCode.DE))); Assertions.assertThat(result.getResults()).isNotEmpty(); return updatedCart; }); }); }