static Optional<ProductVariant> getVariant(final Integer variantId, final ProductDataLike product) { final Optional<ProductVariant> result; final ProductVariant masterVariant = product.getMasterVariant(); if (Objects.equals(variantId, masterVariant.getId())) { result = Optional.of(masterVariant); } else { result = product.getVariants().stream().filter(v -> Objects.equals(v.getId(), variantId)).findFirst(); } return result; }
static Optional<ProductVariant> getVariant(final Integer variantId, final ProductDataLike product) { final Optional<ProductVariant> result; final ProductVariant masterVariant = product.getMasterVariant(); if (variantId == masterVariant.getId()) { result = Optional.of(masterVariant); } else { result = product.getVariants().stream().filter(v -> v.getId() == variantId).findFirst(); } return result; }
static Optional<ProductVariant> getVariant(final int variantId, final ProductDataLike product) { final Optional<ProductVariant> result; final ProductVariant masterVariant = product.getMasterVariant(); if (variantId == masterVariant.getId()) { result = Optional.of(masterVariant); } else { result = product.getVariants().stream().filter(v -> v.getId() == variantId).findFirst(); } return result; }
static Optional<ProductVariant> getVariant(final Integer variantId, final ProductDataLike product) { final Optional<ProductVariant> result; final ProductVariant masterVariant = product.getMasterVariant(); if (Objects.equals(variantId, masterVariant.getId())) { result = Optional.of(masterVariant); } else { result = product.getVariants().stream().filter(v -> Objects.equals(v.getId(), variantId)).findFirst(); } return result; }
public static RemoveVariant of(final ProductVariant variant) { return ofVariantId(variant.getId()); }
public static RemoveVariant of(final ProductVariant variant) { return of(variant.getId()); }
public static RemoveVariant of(final ProductVariant variant, final ProductUpdateScope productUpdateScope) { return of(variant.getId(), productUpdateScope); }
public static RemoveVariant of(final ProductVariant variant) { return ofVariantId(variant.getId()); }
@Test public void findFirstMatchingVariantOnSearch() throws Exception { final ProductProjection product = getProductProjectionFromSearch(); assertThat(product.findFirstMatchingVariant().get().getId()).isEqualTo(2); }
private void changeMasterVariantWithVariantIdWithStaged(final Boolean staged) { withUpdateableProductOfMultipleVariants(client(), product -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final ProductVariant variantSupposedToBeMaster = product.getMasterData().getStaged().getAllVariants().get(2); final Integer variantId = variantSupposedToBeMaster.getId(); final ChangeMasterVariant updateAction = ChangeMasterVariant.ofVariantId(variantId, staged); final Product updatedProduct = client().executeBlocking(ProductUpdateCommand.of(product, updateAction)); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); assertThat(updatedProduct.getMasterData().getStaged().getMasterVariant().getId()).isEqualTo(variantId); return updatedProduct; }); }
@Test public void findMatchingVariantsOnSearch() throws Exception { final ProductProjection product = getProductProjectionFromSearch(); assertThat(product.findMatchingVariants()).extracting(v -> v.getId()).containsExactly(2, 4); }
@Test public void findMatchingVariantsOnQuery() throws Exception { final ProductProjection product = getProductProjectionFromQuery(); assertThat(product.findMatchingVariants()).extracting(v -> v.getId()).isEmpty(); }
@Test public void executeValidQuery(){ withUpdateableProductDiscount(client(),((productDiscount, product) -> { final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); assertThat(masterVariant.getPrices()).isNotEmpty(); final Price masterVariantPrice = masterVariant.getPrices().get(0); final ProductDiscount queryedProductDiscount = client().executeBlocking(MatchingProductDiscountGet.of(product.getId(), masterVariant.getId(),true , masterVariantPrice)); assertThat(productDiscount).isEqualTo(queryedProductDiscount); return productDiscount; })); }
public void setProductVariantKeyByVariantIdWithStaged(final Boolean staged) { final String key = randomKey(); withProduct(client(), (Product product) -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final Integer variantId = product.getMasterData().getStaged().getMasterVariant().getId(); final ProductUpdateCommand cmd = ProductUpdateCommand.of(product, SetProductVariantKey.ofKeyAndVariantId(key, variantId, staged)); final Product updatedProduct = client().executeBlocking(cmd); assertThat(updatedProduct.getMasterData().getStaged().getMasterVariant().getKey()).isEqualTo(key); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); }); }
public void changeAssetNameByVariantIdAndAssetKeyWithStaged(@Nonnull final Boolean staged) { withProductHavingAssets(client(), product -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final LocalizedString newName = LocalizedString.ofEnglish("new name"); final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); final String assetKey = masterVariant.getAssets().get(0).getKey(); final ProductUpdateCommand cmd = ProductUpdateCommand.of(product, ChangeAssetName.ofAssetKeyAndVariantId(masterVariant.getId(), assetKey, newName, staged)); final Product updatedProduct = client().executeBlocking(cmd); final Asset updatedAsset = updatedProduct.getMasterData().getStaged().getMasterVariant().getAssets().get(0); assertThat(updatedAsset.getName()).isEqualTo(newName); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); return updatedProduct; }); }
public void changeAssetNameByVariantIdWithStaged(final Boolean staged) { withProductHavingAssets(client(), product -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final LocalizedString newName = LocalizedString.ofEnglish("new name"); final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); final String assetId = masterVariant.getAssets().get(0).getId(); final ProductUpdateCommand cmd = ProductUpdateCommand.of(product, ChangeAssetName.ofVariantId(masterVariant.getId(), assetId, newName, staged)); final Product updatedProduct = client().executeBlocking(cmd); final Asset updatedAsset = updatedProduct.getMasterData().getStaged().getMasterVariant().getAssets().get(0); assertThat(updatedAsset.getName()).isEqualTo(newName); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); return updatedProduct; }); }
public void setAssetDescriptionByVariantIdWithStaged(final Boolean staged) { withProductHavingAssets(client(), product -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final LocalizedString newDescription = LocalizedString.ofEnglish("new description"); final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); final String assetId = masterVariant.getAssets().get(0).getId(); final ProductUpdateCommand cmd = ProductUpdateCommand.of(product, SetAssetDescription.ofVariantId(masterVariant.getId(), assetId, newDescription, staged)); final Product updatedProduct = client().executeBlocking(cmd); final Asset updatedAsset = updatedProduct.getMasterData().getStaged().getMasterVariant().getAssets().get(0); assertThat(updatedAsset.getDescription()).isEqualTo(newDescription); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); return updatedProduct; }); }
public void setAssetTagsByVariantIdWithStaged(final Boolean staged) { withProductHavingAssets(client(), product -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final Set<String> newTags = new HashSet<>(asList("tag1", "tag2")); final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); final String assetId = masterVariant.getAssets().get(0).getId(); final ProductUpdateCommand cmd = ProductUpdateCommand.of(product, SetAssetTags.ofVariantId(masterVariant.getId(), assetId, newTags, staged)); final Product updatedProduct = client().executeBlocking(cmd); final Asset updatedAsset = updatedProduct.getMasterData().getStaged().getMasterVariant().getAssets().get(0); assertThat(updatedAsset.getTags()).isEqualTo(newTags); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isEqualTo(staged); return updatedProduct; }); }
@Test public void setProductVariantKeyByVariantId() throws Exception { final String key = randomKey(); withProduct(client(), (Product product) -> { assertThat(product.getMasterData().hasStagedChanges()).isFalse(); final Integer variantId = product.getMasterData().getStaged().getMasterVariant().getId(); final ProductUpdateCommand cmd = ProductUpdateCommand.of(product, SetProductVariantKey.ofKeyAndVariantId(key, variantId)); final Product updatedProduct = client().executeBlocking(cmd); assertThat(updatedProduct.getMasterData().getStaged().getMasterVariant().getKey()).isEqualTo(key); assertThat(updatedProduct.getKey()).isNotEqualTo(key); assertThat(updatedProduct.getMasterData().hasStagedChanges()).isTrue(); }); }
@Test(expected = NotFoundException.class) public void executeInvalidQuery(){ withUpdateableProductDiscount(client(),((productDiscount, product) -> { final ProductVariant masterVariant = product.getMasterData().getStaged().getMasterVariant(); final Price invalidPice = Price.of(MoneyImpl.of(0, DefaultCurrencyUnits.USD)); final ProductDiscount queryedProductDiscount = client().executeBlocking(MatchingProductDiscountGet.of(product.getId(), masterVariant.getId(), true, invalidPice)); return productDiscount; })); }