public ProductDraftDsl withMasterVariant(@Nullable final ProductVariantDraft masterVariant) { return newBuilder().masterVariant(masterVariant).build(); }
private void withProductWithImages(final BlockingSphereClient client, final List<String> imageUrls, final Function<Product, Product> productProductFunction) { withUpdateableProduct(client, builder -> { final List<Image> imagesList = new LinkedList<>(); for (final String imageUrl : imageUrls) { imagesList.add(Image.ofWidthAndHeight(imageUrl, 460, 102, "commercetools logo")); } final ProductVariantDraft oldMasterVariant = builder.getMasterVariant(); final ProductVariantDraftBuilder variantDraftBuilder = ProductVariantDraftBuilder.of(oldMasterVariant); variantDraftBuilder.images(imagesList); variantDraftBuilder.sku(randomKey()); return builder.masterVariant(variantDraftBuilder.build()); }, productProductFunction); }
@Test public void prices() { checkFilter(builder -> { final ProductVariantDraft oldMaster = builder.getMasterVariant(); final ProductVariantDraft masterWithPrices = ProductVariantDraftBuilder.of(oldMaster) .prices(singletonList(PriceDraft.of(EURO_1))) .build(); return builder.masterVariant(masterWithPrices); }, m -> m.allVariants().prices()); }
public static void withProductHavingAssets(final BlockingSphereClient client, final UnaryOperator<Product> op) { withUpdateableProduct(client, productDraftBuilder -> { final ProductVariantDraft masterVariant = productDraftBuilder.getMasterVariant(); final ProductVariantDraft variantDraft = ProductVariantDraftBuilder.of(masterVariant) .assets(asList(getAssetDraft1(), getAssetDraft2())) .sku(randomKey()) .build(); return productDraftBuilder.masterVariant(variantDraft); }, op); } public static void withProductHavingImages(final BlockingSphereClient client, final UnaryOperator<Product> op) {
private void withProductOfSku(final String sku, final Function<Product, Product> productProductFunction) { withUpdateableProduct(client(), builder -> { return builder.masterVariant(ProductVariantDraftBuilder.of(builder.getMasterVariant()).sku(sku).build()); }, product -> { final ProductUpdateCommand productUpdateCommand = ProductUpdateCommand.of(product, Publish.of()); final Product publishedProduct = client().executeBlocking(productUpdateCommand); return productProductFunction.apply(publishedProduct); }); }
public static void withProductHavingImages(final BlockingSphereClient client, final UnaryOperator<Product> op) { withUpdateableProduct(client, productDraftBuilder -> { final ProductVariantDraft masterVariant = productDraftBuilder.getMasterVariant(); final ProductVariantDraft variantDraft = ProductVariantDraftBuilder.of(masterVariant) .images(createExternalImage()) .sku(randomKey()) .build(); return productDraftBuilder.masterVariant(variantDraft); }, op); }
@Test public void sku() { checkFilter(builder -> { final ProductVariantDraft masterVariant = ProductVariantDraftBuilder.of(builder.getMasterVariant()) .sku("sku-test-" + randomKey()) .build(); return builder.masterVariant(masterVariant); }, m -> m.allVariants().sku()); }
@Test public void productAttribute() { checkFilter(builder -> { final ProductVariantDraft masterVariant = ProductVariantDraftBuilder.of(builder.getMasterVariant()) .attributes(AttributeDraft.of("stringfield", "hello")) .build(); return builder.masterVariant(masterVariant); }, m -> m.allVariants().attribute().ofString("stringfield")); }
private void checkFilter(final UnaryOperator<ProductDraftBuilder> productDraftBuilderUnaryOperator, final Function<ProductProjectionFilterSearchModel, ExistsAndMissingFilterSearchModelSupport<ProductProjection>> dsl) { withProduct(client(), productDraftBuilderUnaryOperator, productWith -> { withProduct(client(), builder -> builder.masterVariant(ProductVariantDraftBuilder.of(builder.getMasterVariant()).sku(null).build()), productWithout -> { assertThat(productWithout.getMasterData().getStaged().getMasterVariant().getSku()).as("sku for productWithout is missing").isNull(); final ProductProjectionSearch baseRequest = ProductProjectionSearch.ofStaged() .withQueryFilters(m -> { final List<String> productIds = asList(productWith.getId(), productWithout.getId()); return m.id().isIn(productIds); }); final ProductProjectionSearch exists = baseRequest.plusQueryFilters(m -> dsl.apply(m).exists()); final ProductProjectionSearch missing = baseRequest.plusQueryFilters(m -> dsl.apply(m).missing()); assertEventually(() -> { assertThat(client().executeBlocking(exists).getResults()).hasSize(1).extracting(s -> s.getId()).as("exists").containsExactly(productWith.getId()); assertThat(client().executeBlocking(missing).getResults()).hasSize(1).extracting(s -> s.getId()).as("missing").containsExactly(productWithout.getId()); }); }); }); } }
public static void withUpdateableProductDiscount(final BlockingSphereClient client, final BiFunction<ProductDiscount, Product, ProductDiscount> function) { withUpdateableProduct(client, builder -> builder.masterVariant(ProductVariantDraftBuilder.of().price(PRICE).build()), product -> { final ProductDiscountPredicate predicate = ProductDiscountPredicate.of("product.id = \"" + product.getId() + "\""); final AbsoluteProductDiscountValue discountValue = AbsoluteProductDiscountValue.of(EURO_1); final LocalizedString name = en("demo product discount"); final LocalizedString description = en("description"); final boolean active = true; final String sortOrder = randomSortOrder(); final ProductDiscountDraft discountDraft = ProductDiscountDraft.of(name, description, predicate, discountValue, sortOrder, active); final ProductDiscount productDiscount = client.executeBlocking(ProductDiscountCreateCommand.of(discountDraft)); final ProductDiscount updatedDiscount = function.apply(productDiscount, product); client.executeBlocking(ProductDiscountDeleteCommand.of(updatedDiscount)); return client.executeBlocking(ProductByIdGet.of(product)); }); }