@Test public void byKey() { ProductTypeFixtures.withEmptyProductType(client(), productType -> { final String key = randomKey(); final ProductDraft productDraft = ProductDraftBuilder.of(productType, randomSlug(), randomSlug(), ProductVariantDraftBuilder.of().build()).key(key).build(); final Product product = client().executeBlocking(ProductCreateCommand.of(productDraft)); final Product deletedProduct = client().executeBlocking(ProductDeleteCommand.ofKey(key, product.getVersion())); assertThat(client().executeBlocking(ProductByKeyGet.of(key))).isNull(); }); } }
@Test public void message() { ProductTypeFixtures.withEmptyProductType(client(), productType -> { final String key = randomKey(); final Image image = createExternalImage(); final ProductDraft productDraft = ProductDraftBuilder.of(productType, randomSlug(), randomSlug(), ProductVariantDraftBuilder.of().images(image).build()).key(key).build(); final Product product = client().executeBlocking(ProductCreateCommand.of(productDraft)); final Product deletedProduct = client().executeBlocking(ProductDeleteCommand.ofKey(key, product.getVersion())); Query<ProductDeletedMessage> messageQuery = MessageQuery.of() .withPredicates(m -> m.resource().is(deletedProduct)) .withSort(m -> m.createdAt().sort().desc()) .withExpansionPaths(m -> m.resource()) .withLimit(1L) .forMessageType(ProductDeletedMessage.MESSAGE_HINT); assertEventually(() -> { final PagedQueryResult<ProductDeletedMessage> queryResult = client().executeBlocking(messageQuery); assertThat(queryResult.head()).isPresent(); final ProductDeletedMessage message = queryResult.head().get(); assertThat(message.getResource().getId()).isEqualTo(product.getId()); assertThat(message.getRemovedImageUrls()).containsExactly(image.getUrl()); }); }); } }