@Test public void slugifyUnique() throws Exception { final LocalizedString actual = LocalizedString.of(Locale.GERMAN, "Aa -A_", Locale.ENGLISH, "dog food").slugifiedUnique(); assertThat(actual.stream().allMatch(entry -> entry.getValue().matches("[\\w-]+-\\d{6,14}"))).isTrue(); }
@Test public void defaultUseCases() { final LocalizedString ls = LocalizedString.of(Locale.GERMAN, "Hundefutter", Locale.ENGLISH, "dog food"); assertThat(ls.getTranslation(singletonList(Locale.US))).isEqualTo("dog food");//fuzzy search assertThat(ls.getTranslation(singletonList(Locale.ENGLISH))).isEqualTo("dog food");//strict search assertThat(ls.getLocales()).isEqualTo(new HashSet<>(asList(Locale.GERMAN, Locale.ENGLISH)));//inspecting locales assertThat(ls.slugified())//slugified values for urls .isEqualTo(LocalizedString.of(Locale.GERMAN, "hundefutter", Locale.ENGLISH, "dog-food")); final LocalizedString slugifiedUnique = ls.slugifiedUnique(); assertThat(slugifiedUnique.get(Locale.GERMAN)).matches("hundefutter-\\d+");//example: hundefutter-62899407 assertThat(slugifiedUnique.get(Locale.ENGLISH)).matches("dog-food-\\d+"); }
@Test public void slugifyUniqueRespectsAllowedLength() { final int allowedLength = 256; final String tooLongString = StringUtils.repeat("a", allowedLength + 1); assertThat(tooLongString).hasSize(allowedLength + 1); final String actual = LocalizedString.ofEnglish(tooLongString).slugifiedUnique().get(Locale.ENGLISH); assertThat(actual).hasSize(allowedLength).matches("a{247}-\\d{8}"); }
@Test public void slugifyUniqueDemo() throws Exception { final LocalizedString ls = LocalizedString.of(Locale.GERMAN, "Hundefutter", Locale.ENGLISH, "dog food"); final LocalizedString slugifiedUnique = ls.slugifiedUnique(); assertThat(slugifiedUnique.get(Locale.GERMAN)).matches("hundefutter-\\d+");//example: hundefutter-62899407 assertThat(slugifiedUnique.get(Locale.ENGLISH)).matches("dog-food-\\d+"); }
@Test public void execution() throws Exception { final LocalizedString name = LocalizedString.of(Locale.ENGLISH, "winter clothing"); final LocalizedString slug = name.slugifiedUnique(); final String externalId = randomKey(); final LocalizedString metaDescription = LocalizedString.of(Locale.ENGLISH, "winter clothing to keep you warm"); final LocalizedString metaTitle = LocalizedString.of(Locale.ENGLISH, "winter warm clothing"); final LocalizedString metaKeywords = LocalizedString.of(Locale.ENGLISH, "winter,clothes"); final CategoryDraft categoryDraft = CategoryDraftBuilder.of(name, slug) .metaDescription(metaDescription) .metaTitle(metaTitle) .metaKeywords(metaKeywords) .externalId(externalId).build(); final Category category = client().executeBlocking(CategoryCreateCommand.of(categoryDraft)); assertThat(category.getName()).isEqualTo(name); assertThat(category.getSlug()).isEqualTo(slug); assertThat(category.getMetaTitle()).isEqualTo(metaTitle); assertThat(category.getMetaDescription()).isEqualTo(metaDescription); assertThat(category.getMetaKeywords()).isEqualTo(metaKeywords); assertThat(category.getExternalId()).contains(externalId); }
public static Product createTestProduct(final BlockingSphereClient client, final String name, final ProductVariantDraft masterVariant, final Referenceable<ProductType> productTypeReferenceable) { final LocalizedString locName = LocalizedString.ofEnglish(name); final ProductDraft productDraft = ProductDraftBuilder.of(productTypeReferenceable.toReference(), locName, locName.slugifiedUnique(), masterVariant).build(); return client.executeBlocking(ProductCreateCommand.of(productDraft)); } }
private static void withProductInCategory(final BlockingSphereClient client, final Referenceable<Category> category, final Consumer<Product> user) { final ProductType productType = client.executeBlocking(ProductTypeCreateCommand.of(ProductTypeDraft.of(randomKey(), CategoryDocumentationIntegrationTest.class.getSimpleName(), "", asList()))); final LocalizedString name = LocalizedString.of(ENGLISH, "foo"); final Product product = client.executeBlocking(ProductCreateCommand.of(ProductDraftBuilder.of(productType, name, name.slugifiedUnique(), ProductVariantDraftBuilder.of().build()).categories(asSet(category.toReference())).build())); user.accept(product); client.executeBlocking(ProductDeleteCommand.of(product)); client.executeBlocking(ProductTypeDeleteCommand.of(productType)); }
@Override public ProductDraft get() { final ProductVariantDraft masterVariant = ProductVariantDraftBuilder.of() .attributes(Sizes.ATTRIBUTE.draftOf(Sizes.S), Colors.ATTRIBUTE.draftOf(Colors.GREEN)) .sku(UUID.randomUUID().toString()) .build(); final LocalizedString slug = en(name).slugifiedUnique(); return ProductDraftBuilder.of(productType, en(name), slug, masterVariant) .description(en(name)) .metaTitle(en("cotton t-shirt")) .metaDescription(en("cotton t-shirt description")) .metaKeywords(en("cotton, t-shirt, clothes")) .build(); }
private static Product createEvilTestProduct(final ProductType productType, final String germanName, final String evilValue, final String sku) { final LocalizedString name = LocalizedString.of(GERMAN, germanName); final ProductVariantDraft masterVariant = ProductVariantDraftBuilder.of() .attributes(AttributeDraft.of(ATTR_NAME_EVIL, evilValue)) .sku(sku) .build(); final ProductDraft productDraft = ProductDraftBuilder.of(productType, name, name.slugifiedUnique(), masterVariant).build(); return client().executeBlocking(ProductCreateCommand.of(productDraft)); } }
@Override public ProductDraft get() { final ProductVariantDraft masterVariant = ProductVariantDraftBuilder.of() .attributes(Sizes.ATTRIBUTE.draftOf(Sizes.S), Colors.ATTRIBUTE.draftOf(Colors.GREEN)) .sku(UUID.randomUUID().toString()) .prices(PriceDraft.of(MoneyImpl.ofCents(1234, EUR))) .build(); final ProductVariantDraft secondVariant = ProductVariantDraftBuilder.of() .attributes(Sizes.ATTRIBUTE.draftOf(Sizes.M), Colors.ATTRIBUTE.draftOf(Colors.GREEN)) .sku(UUID.randomUUID().toString()) .prices(PriceDraft.of(MoneyImpl.ofCents(1234, EUR)), PriceDraft.of(MoneyImpl.ofCents(600, EUR)).withCustomerGroup(customerGroup)) .build(); final LocalizedString slug = en(name).slugifiedUnique(); return ProductDraftBuilder.of(productType, en(name), slug, masterVariant) .variants(asList(secondVariant)) .description(en(name)) .metaTitle(en("cotton t-shirt")) .metaDescription(en("cotton t-shirt description")) .metaKeywords(en("cotton, t-shirt, clothes")) .build(); }