private static void withImportedOrder(final BlockingSphereClient client, final OrderImportDraft draft, final Function<Order, Order> operator) { final Order order = client.executeBlocking(OrderImportCommand.of(draft)); final Order updatedOrder = operator.apply(order); client.executeBlocking(OrderDeleteCommand.of(updatedOrder)); }
@Test public void minimalOrder() throws Exception { withProduct(client(), product -> { final String productId = product.getId(); final int variantId = 1; final LocalizedString name = en("a name"); final long quantity = 1; final Price price = Price.of(EURO_10); final OrderState orderState = OrderState.OPEN; final MonetaryAmount amount = EURO_10; final ProductVariantImportDraft variant = ProductVariantImportDraftBuilder.of(productId, variantId).build(); final LineItemImportDraft lineItemImportDraft = LineItemImportDraftBuilder.of(variant, quantity, price, name).build(); final OrderImportDraft orderImportDraft = OrderImportDraftBuilder.ofLineItems(amount, orderState, asList(lineItemImportDraft)) .country(DE).build(); final OrderImportCommand cmd = OrderImportCommand.of(orderImportDraft); final Order order = client().executeBlocking(cmd); assertThat(order.getOrderState()).isEqualTo(orderState); assertThat(order.getTotalPrice()).isEqualTo(amount); assertThat(order.getLineItems()).hasSize(1); assertThat(order.getCountry()).isEqualTo(DE); assertThat(order.getCart()).isNull(); final LineItem lineItem = order.getLineItems().get(0); assertThat(lineItem.getName()).isEqualTo(name); assertThat(lineItem.getProductId()).isEqualTo(productId); assertThat(lineItem.getVariant().getId()).isEqualTo(variantId); assertThat(lineItem.getName()).isEqualTo(name); assertThat(lineItem.getQuantity()).isEqualTo(quantity); }); }
final OrderImportDraft orderImportDraft = draftFromJsonResource("drafts-tests/order.json", OrderImportDraft.class, referenceResolver); final Order order = client().executeBlocking(OrderImportCommand.of(orderImportDraft));
.build(); final Order order = client().executeBlocking(OrderImportCommand.of(orderImportDraft));
private void testOrderAspect(final Consumer<OrderImportDraftBuilder> orderBuilderConsumer, final Consumer<Order> orderConsumer) { withProduct(client(), product -> { final String productId = product.getId(); final int variantId = 1; final LocalizedString name = en("a name"); final long quantity = 1; final Price price = Price.of(EURO_10); final OrderState orderState = OrderState.OPEN; final MonetaryAmount amount = EURO_10; final ProductVariantImportDraft variant = ProductVariantImportDraftBuilder.of(productId, variantId).build(); final LineItemImportDraft lineItemImportDraft = LineItemImportDraftBuilder.of(variant, quantity, price, name).build(); final OrderImportDraftBuilder orderImportDraftBuilder = OrderImportDraftBuilder.ofLineItems(amount, orderState, asList(lineItemImportDraft)); orderBuilderConsumer.accept(orderImportDraftBuilder); final OrderImportDraft orderImportDraft = orderImportDraftBuilder.build(); final OrderImportCommand cmd = OrderImportCommand.of(orderImportDraft); final Order order = client().executeBlocking(cmd); orderConsumer.accept(order); client().executeBlocking(OrderDeleteCommand.of(order)); }); }
@Test public void inventoryMode() throws Exception { testOrderAspect(builder -> { builder.inventoryMode(null); }, order -> assertThat(order.getInventoryMode()).isEqualTo(InventoryMode.NONE)); withProductOfStock(client(), 5, product -> { final int variantId = 1; final String sku = product.getMasterData().getStaged().getMasterVariant().getSku(); final String productId = product.getId(); final LocalizedString name = en("a name"); final long quantity = 1; final Price price = Price.of(EURO_10); final OrderState orderState = OrderState.COMPLETE; final MonetaryAmount amount = EURO_10; final TaxCalculationMode taxCalculationMode = TaxCalculationMode.LINE_ITEM_LEVEL; final ProductVariantImportDraft variant = ProductVariantImportDraftBuilder.of(productId, variantId, sku).build(); final LineItemImportDraft lineItemImportDraft = LineItemImportDraftBuilder.of(variant, quantity, price, name).build(); final OrderImportDraft orderImportDraft = OrderImportDraftBuilder.ofLineItems(amount, orderState, asList(lineItemImportDraft)) .inventoryMode(InventoryMode.TRACK_ONLY) .taxCalculationMode(taxCalculationMode) .build(); final OrderImportCommand cmd = OrderImportCommand.of(orderImportDraft); final Order order = client().executeBlocking(cmd); assertThat(order.getInventoryMode()).isEqualTo(InventoryMode.TRACK_ONLY); assertThat(order.getTaxCalculationMode()).isEqualTo(taxCalculationMode); client().executeBlocking(OrderDeleteCommand.of(order)); }); }
final OrderImportDraft orderImportDraft = OrderImportDraftBuilder.ofLineItems(amount, orderState, asList(lineItemImportDraft)) .country(DE).build(); final OrderImportCommand cmd = OrderImportCommand.of(orderImportDraft);