public PriceCollectionQueryModel<T> prices() { return new PriceCollectionQueryModel<>(this, "prices"); } }
@Override public CountryQueryModel<T> country() { return countryQueryModel("country"); }
@Override public QueryPredicate<T> isEmpty() { return isEmptyCollectionQueryPredicate(); }
@Test public void queryByTiersWithMinimumQuantity() { withProduct(client(), product -> { final ProductQuery productQuery = ProductQuery.of() .withPredicates(m -> m.masterData().current().variants().prices().tiers().minimumQuantity().isGreaterThan(5)) .plusPredicates(m -> m.is(product)); final List<Product> results = client().executeBlocking(productQuery).getResults(); assertThat(results).hasSize(0); }); }
@Override public ReferenceOptionalQueryModel<T, CustomerGroup> channel() { return referenceOptionalModel("channel"); }
@Override public PriceQueryModel<T> price() { return PriceCollectionQueryModel.of(this, "price"); }
@Override public StringQueryModel<T> id() { return stringModel("id"); }
@Override public QueryPredicate<T> isNotEmpty() { return isNotEmptyCollectionQueryPredicate(); }
@Override public MoneyQueryModel<T> value() { return moneyModel("value"); }
@Test public void queryProductsWithAnyDiscount() throws Exception { withUpdateableProductDiscount(client(), (ProductDiscount productDiscount, Product product) -> { final ProductQuery query = ProductQuery.of() .withPredicates(m -> m.id().is(product.getId()) .and(m.masterData().staged().masterVariant().prices().discounted().isPresent())); final Duration maxWaitTime = Duration.ofMinutes(2); final Duration waitBeforeRetry = Duration.ofMillis(500); assertEventually(maxWaitTime, waitBeforeRetry, () -> { final Optional<Product> loadedProduct = client().executeBlocking(query).head(); assertThat(loadedProduct.isPresent()).isTrue(); assertThat(loadedProduct.get().getId()).isEqualTo(product.getId()); }); return productDiscount; }); }
@Test public void queryByTiersWithValue() { withProduct(client(), product -> { final ProductQuery productQuery = ProductQuery.of() .withPredicates(m -> m.masterData().current().variants().prices().tiers().value().currencyCode().is("EUR")) .plusPredicates(m -> m.is(product)); final List<Product> results = client().executeBlocking(productQuery).getResults(); assertThat(results).hasSize(0); }); }
@Override public ReferenceOptionalQueryModel<T, CustomerGroup> customerGroup() { return referenceOptionalModel("customerGroup"); }
@Override public PriceQueryModel<T> price() { return PriceCollectionQueryModel.of(this, "price"); }
@Override public PriceQueryModel<T> price() { return new PriceCollectionQueryModel<>(this, "price"); }