package com.adobe.acs.commons.wcm.impl; import org.junit.Test; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.*; public class PageRootProviderImplTest { PageRootProviderImpl provider = new PageRootProviderImpl(); Map<String, Object> config = new HashMap<String, Object>(); @Test public void getRootPagePath() throws Exception { config.put("page.root.path", new String[]{"/content"}); provider.activate(config); assertEquals("/content", provider.getRootPagePath("/content/site/en_us/products/product-x")); assertEquals("/content", provider.getRootPagePath("/content/site/en_us/products/product-x/jcr:content/my-component")); assertEquals("/content", provider.getRootPagePath("/content/site/en_us")); assertEquals("/content", provider.getRootPagePath("/content/")); assertEquals("/content", provider.getRootPagePath("/content")); assertNull("/content", provider.getRootPagePath("/etc/site")); assertNull("/content", provider.getRootPagePath("/conf/site")); } @Test public void getRootPagePath_Regex() throws Exception { config.put("page.root.path", new String[]{"/content/site/([a-z_-]+)"}); provider.activate(config); assertEquals("/content/site/en_us", provider.getRootPagePath("/content/site/en_us/products/product-x")); assertEquals("/content/site/fr", provider.getRootPagePath("/content/site/fr/products/product-x/jcr:content/my-component")); assertEquals("/content/site/de_de", provider.getRootPagePath("/content/site/de_de")); assertNull(provider.getRootPagePath("/content")); assertNull(provider.getRootPagePath("/content/en_us/products")); assertNull(provider.getRootPagePath("/content/123/site")); } @Test public void getRootPagePath_RegexEnd() throws Exception { config.put("page.root.path", new String[]{"/content/site/[a-z]{2}"}); provider.activate(config); assertEquals("/content/site/en", provider.getRootPagePath("/content/site/en/products/product-x")); assertEquals("/content/site/de", provider.getRootPagePath("/content/site/de")); assertNull(provider.getRootPagePath("/content/site/en_us/products")); assertNull(provider.getRootPagePath("/content/site/somewhereelse")); } @Test public void getRootPagePath_Order1() throws Exception { config.put("page.root.path", new String[]{"/content", "/content/a"}); provider.activate(config); assertEquals("/content", provider.getRootPagePath("/content/a/b/c")); } @Test public void getRootPagePath_Order2() throws Exception { config.put("page.root.path", new String[]{"/content/a", "/content"}); provider.activate(config); assertEquals("/content/a", provider.getRootPagePath("/content/a/b/c")); assertEquals("/content", provider.getRootPagePath("/content/b")); } }