public static void withCategories(final BlockingSphereClient client, final List<Supplier<? extends CategoryDraft>> creator, final Consumer<List<Category>> user) { List<Category> categories = creator.stream().map(singleCreator -> { final CategoryDraft categoryDraft = singleCreator.get(); final String slug = englishSlugOf(categoryDraft); final PagedQueryResult<Category> pagedQueryResult = client.executeBlocking(CategoryQuery.of().bySlug(Locale.ENGLISH, slug)); pagedQueryResult.head().ifPresent( category -> client.executeBlocking(CategoryDeleteCommand.of(category)) ); final Category category = client.executeBlocking(CategoryCreateCommand.of(categoryDraft)); return category; }).collect(Collectors.toList()); try { user.accept(categories); } finally { categories.forEach(category -> { client.executeBlocking(CategoryDeleteCommand.of(category)); }); } }
public static void withUpdateableProduct(final BlockingSphereClient client, final Supplier<? extends ProductDraft> creator, final Function<Product, Product> user) { final ProductDraft productDraft = creator.get(); final String slug = englishSlugOf(productDraft); final PagedQueryResult<Product> pagedQueryResult = client.executeBlocking(ProductQuery.of().bySlug(ProductProjectionType.CURRENT, Locale.ENGLISH, slug)); delete(client, pagedQueryResult.getResults()); final Product product = client.executeBlocking(ProductCreateCommand.of(productDraft)); final Product possiblyUpdateProduct = user.apply(product); delete(client, possiblyUpdateProduct); }
public static void withCategory(final BlockingSphereClient client, final Supplier<? extends CategoryDraft> creator, final Consumer<Category> user) { final CategoryDraft categoryDraft = creator.get(); final String slug = englishSlugOf(categoryDraft); final PagedQueryResult<Category> pagedQueryResult = client.executeBlocking(CategoryQuery.of().bySlug(Locale.ENGLISH, slug)); pagedQueryResult.head().ifPresent(category -> client.executeBlocking(CategoryDeleteCommand.of(category))); final Category category = client.executeBlocking(CategoryCreateCommand.of(categoryDraft)); LOGGER.debug(() -> "created category " + category.getSlug() + " id: " + category.getId()); try { user.accept(category); } finally { final PagedQueryResult<Category> res = client.executeBlocking(CategoryQuery.of().byId(category.getId())); //need to update because category could be changed client.executeBlocking(CategoryDeleteCommand.of(res.head().get())); LOGGER.debug(() -> "deleted category " + category.getId()); } }
@Test public void productType() throws Exception { final Consumer<Product> user = product -> { final Query<Product> query = ProductQuery.of(). bySlug(ProductProjectionType.CURRENT, Locale.ENGLISH, englishSlugOf(product.getMasterData().getStaged())). withExpansionPaths(ProductExpansionModel.of().productType()). toQuery(); final PagedQueryResult<Product> queryResult = client().executeBlocking(query); final Reference<ProductType> productTypeReference = queryResult.head().get().getProductType(); assertThat(productTypeReference).is(expanded()); }; withProduct(client(), "productTypeReferenceExpansion", user); }
@Test public void taxCategory() throws Exception { TaxCategoryFixtures.withTransientTaxCategory(client(), taxCategory -> withProduct(client(), product -> { final Product productWithTaxCategory = client().executeBlocking(ProductUpdateCommand.of(product, SetTaxCategory.of(taxCategory))); assertThat(productWithTaxCategory.getTaxCategory()).isNotNull(); final Query<Product> query = ProductQuery.of(). bySlug(ProductProjectionType.CURRENT, Locale.ENGLISH, englishSlugOf(product.getMasterData().getStaged())). withExpansionPaths(ProductExpansionModel.of().taxCategory()). toQuery(); final PagedQueryResult<Product> queryResult = client().executeBlocking(query); final Reference<TaxCategory> productTypeReference = firstOf(queryResult).getTaxCategory(); assertThat(productTypeReference).is(expanded()); }) ); } }