private Price searchWith(final Product product, final PriceSelection selection) { final ProductProjectionSearch searchRequest = ProductProjectionSearch.ofStaged() .withQueryFilters(m -> m.id().is(product.getId()))//to limit the test scope .withPriceSelection(selection);//price selection config final PagedSearchResult<ProductProjection> searchResult = client().executeBlocking(searchRequest); assertThat(searchResult.getCount()).isEqualTo(1); return searchResult.head().get().getMasterVariant().getPrice(); }
.plusQueryFilters(m -> m.allVariants().attribute().ofString(attributeName).is("3")); assertEventually(() -> { final Optional<ProductProjection> productProjectionOptional = client().executeBlocking(searchRequest).head(); assertThat(productProjectionOptional).isPresent(); final ProductProjection productProjection = productProjectionOptional.get(); assertEventually(() -> { final ProductProjectionSearch withoutFlagSearchRequest = searchRequest.withMarkingMatchingVariants(false); final Optional<ProductProjection> productProjectionOptional = client().executeBlocking(withoutFlagSearchRequest).head(); assertThat(productProjectionOptional).isPresent(); assertThat(productProjectionOptional.get().getMasterVariant().isMatchingVariant()).isNull();
@Test public void searchByFullLocale() { final Locale austria = Locale.forLanguageTag("de-AT"); final String marille = "Marille"; final LocalizedString apricot = LocalizedString .of(GERMAN, "Aprikose") .plus(austria, marille) .plus(ENGLISH, "apricot"); withProduct(client(), productBuilder -> productBuilder.name(apricot), product -> { final ProductProjectionSearch austrianSearchRequest = ProductProjectionSearch.ofStaged() .withText(austria, marille) .plusQueryFilters(productModel -> productModel.id().is(product.getId())); final ProductProjectionSearch germanSearchRequest = austrianSearchRequest.withText(GERMAN, marille); assertEventually(() -> { final List<ProductProjection> results = client().executeBlocking(austrianSearchRequest).getResults(); assertThat(results).isNotEmpty(); assertThat(results.get(0).getId()).isEqualTo(product.getId()); assertThat(client().executeBlocking(germanSearchRequest).head()) .as("word is for austria defined and should not be found for just 'de'") .isEmpty(); }); }); } }