/** * Finds a variant by SKU. * @param sku the sku for the variant * @return Optional of the found variant */ default Optional<ProductVariant> findVariantBySku(final String sku) { Objects.requireNonNull(sku); return getAllVariants().stream().filter(v -> sku.equals(v.getSku())).findFirst(); }
/** * Finds a variant by SKU. * @param sku the sku for the variant * @return Optional of the found variant */ default Optional<ProductVariant> findVariantBySku(final String sku) { Objects.requireNonNull(sku); return getAllVariants().stream().filter(v -> sku.equals(v.getSku())).findFirst(); }
/** * Finds a variant by SKU. * @param sku the sku for the variant * @return Optional of the found variant * @deprecated use {@link #findVariantBySku(String)} instead */ @Deprecated default Optional<ProductVariant> findVariantBySky(final String sku) { Objects.requireNonNull(sku); return getAllVariants().stream().filter(v -> sku.equals(v.getSku())).findFirst(); }
/** * Finds a variant by SKU. * @param sku the sku for the variant * @return Optional of the found variant */ default Optional<ProductVariant> findVariantBySku(final String sku) { Objects.requireNonNull(sku); return getAllVariants().stream().filter(v -> sku.equals(v.getSku())).findFirst(); }
protected void fillVariantInfo(final ProductVariantBean bean, final ProductVariant variant) { bean.setSku(variant.getSku()); createImage(variant).ifPresent(bean::setImage); }
default Optional<Call> productDetailPageCall(final Locale locale, final LineItem lineItem) { return Optional.ofNullable(lineItem.getProductSlug()) .flatMap(slugs -> slugs.find(locale) .map(slug -> productDetailPageCall(locale.toLanguageTag(), slug, lineItem.getVariant().getSku()))); }
default Optional<Call> productDetailPageCall(final Locale locale, final ProductProjection product, final ProductVariant productVariant) { return product.getSlug().find(locale) .map(slug -> productDetailPageCall(locale.toLanguageTag(), slug, productVariant.getSku())); }
@Test public void skuExistsExample() { final ProductProjectionSearch search = ProductProjectionSearch.ofStaged().bySku(SKU1); testResult(search, result -> { final List<ProductProjection> results = result.getResults(); assertThat(results.size()).isEqualTo(1); assertThat(results.get(0).getAllVariants().stream().anyMatch(variant -> SKU1.equals(variant.getSku()))).isEqualTo(true); }); }
@Test public void checkProductVaiantAtributes() throws Exception { assertThat(productVariant.getSku().equals("1f92d491-2180-489c-bcef-3966cdc68c0b")); assertThat(productVariant.getPrices()) .as("comparing prices ") .isEqualTo(asList(Price.of(BigDecimal.valueOf(12.34), DefaultCurrencyUnits.EUR).withCountry(CountryCode.DE).withId("70a56289-bd20-4c47-8364-47b498ad993b"))); assertThat(productVariant.getImages().isEmpty()); assertThat(productVariant.getAssets().isEmpty()); assertThat(productVariant.getAttributes().isEmpty()); } }
@Test public void checkProductVaiantAtributes() throws Exception { assertThat(productVariant.getSku().equals("1f92d491-2180-489c-bcef-3966cdc68c0b")); assertThat(productVariant.getPrices()) .as("comparing prices ") .isEqualTo(asList(Price.of(BigDecimal.valueOf(12.34), DefaultCurrencyUnits.EUR).withCountry(CountryCode.DE).withId("70a56289-bd20-4c47-8364-47b498ad993b"))); assertThat(productVariant.getImages().isEmpty()); assertThat(productVariant.getAssets().isEmpty()); assertThat(productVariant.getAttributes().isEmpty()); } }
private String sku(final Product product) { return product.getMasterData().getStaged().getMasterVariant().getSku(); }
@Test public void filterBySku() { final List<String> skus = Stream.of(product1, product2) .map(product -> product.getMasterData().getStaged().getMasterVariant().getSku()) .collect(toList()); final ProductProjectionSearch search = ProductProjectionSearch.ofStaged() .plusQueryFilters(m -> m.allVariants().sku().isIn(skus)); assertEventually(Duration.ofSeconds(45), Duration.ofMillis(200), () -> { assertThat(client().executeBlocking(search).getResults()) .extracting(m -> m.getMasterVariant().getSku()) .containsOnly(skus.get(0), skus.get(1)); }); }
public static void withProductOfRestockableInDaysAndChannel(final BlockingSphereClient client, final int restockableInDays, @Nullable final Referenceable<Channel> channelReferenceable, final Consumer<Product> productConsumer) { final Reference<Channel> channelReference = Optional.ofNullable(channelReferenceable).map(Referenceable::toReference).orElse(null); ProductFixtures.withProduct(client, product -> { final String sku = product.getMasterData().getStaged().getMasterVariant().getSku(); final InventoryEntry inventoryEntry = client.executeBlocking(InventoryEntryCreateCommand.of(InventoryEntryDraft.of(sku, 5, null, restockableInDays, channelReference))); productConsumer.accept(product); client.executeBlocking(InventoryEntryDeleteCommand.of(inventoryEntry)); }); }
public static void withProductOfStockAndChannel(final BlockingSphereClient client, final int availableQuantity, @Nullable final Referenceable<Channel> channelReferenceable, final Consumer<Product> productConsumer) { final Reference<Channel> channelReference = Optional.ofNullable(channelReferenceable).map(Referenceable::toReference).orElse(null); ProductFixtures.withProduct(client, product -> { final String sku = product.getMasterData().getStaged().getMasterVariant().getSku(); final InventoryEntry inventoryEntry = client.executeBlocking(InventoryEntryCreateCommand.of(InventoryEntryDraft.of(sku, availableQuantity, null, null, channelReference))); productConsumer.accept(product); client.executeBlocking(InventoryEntryDeleteCommand.of(inventoryEntry)); }); }
/** * Creates a new object initialized with the fields of the template parameter. * * @param template the template * @return a new object initialized from the template */ public static ProductVariantDraftBuilder of(final ProductVariant template) { return new ProductVariantDraftBuilder(copyAssets(template.getAssets()), copyAttributes(template.getAttributes()), template.getImages(), template.getKey(), copyPrices(template.getPrices()), template.getSku()); } }
public void setProductVariantKeyBySkuWithStaged(final Boolean staged) { final String key = randomKey(); withProduct(client(), (Product product) -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final String sku = product.getMasterData().getStaged().getMasterVariant().getSku(); final ProductUpdateCommand cmd = ProductUpdateCommand.of(product, SetProductVariantKey.ofKeyAndSku(key, sku, staged)); final Product updatedProduct = client().executeBlocking(cmd); assertThat(updatedProduct.getMasterData().getStaged().getMasterVariant().getKey()).isEqualTo(key); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); }); }
public void removeAssetBySkuWithStaged(final Boolean staged) { withProductHavingAssets(client(), product -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); final String assetId = masterVariant.getAssets().get(0).getId(); final String sku = masterVariant.getSku(); final Product updatedProduct = client().executeBlocking(ProductUpdateCommand.of(product, RemoveAsset.ofSku(sku, assetId, staged))); final List<Asset> assets = updatedProduct.getMasterData().getStaged().getMasterVariant().getAssets(); assertThat(assets).allMatch(asset -> !asset.getId().equals(assetId)); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); return updatedProduct; }); }
public void addExternalImageBySkuWithStaged(final Boolean staged) { withUpdateableProduct(client(), (Product product) -> { final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); assertThat(masterVariant.getImages()).hasSize(0); assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final Image image = createExternalImage(); final Product updatedProduct = client().executeBlocking(ProductUpdateCommand.of(product, AddExternalImage.ofSku(masterVariant.getSku(), image, staged))); assertThat(updatedProduct.getMasterData().getStaged().getMasterVariant().getImages()).isEqualTo(asList(image)); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); return updatedProduct; }); }
@Test public void removeAssetBySku() { withProductHavingAssets(client(), product -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); final String assetId = masterVariant.getAssets().get(0).getId(); final String sku = masterVariant.getSku(); final Product updatedProduct = client().executeBlocking(ProductUpdateCommand.of(product, RemoveAsset.ofSku(sku, assetId))); final List<Asset> assets = updatedProduct.getMasterData().getStaged().getMasterVariant().getAssets(); assertThat(assets).allMatch(asset -> !asset.getId().equals(assetId)); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isTrue(); return updatedProduct; }); }
@Test public void removeImageBySku() throws Exception { final Image image = createExternalImage(); withUpdateableProduct(client(), product -> { final String sku = product.getMasterData().getStaged().getMasterVariant().getSku(); final Product productWithImage = client().executeBlocking(ProductUpdateCommand.of(product, AddExternalImage.ofSku(sku, image))); assertThat(productWithImage.getMasterData().getStaged().getMasterVariant().getImages()).isEqualTo(asList(image)); final Product updatedProduct = client().executeBlocking(ProductUpdateCommand.of(productWithImage, RemoveImage.ofSku(sku, image))); assertThat(updatedProduct.getMasterData().getStaged().getMasterVariant().getImages()).hasSize(0); return updatedProduct; }); }