in src/main/java/org/apache/sling/launchpad/webapp/integrationtest/NodeTypeBasedRenderingTest.java [51:84]
private void testSpecificNodeType(String nodeType, String... moreProperties) throws IOException {
// Create test node of specified type
testClient.mkdirs(HTTP_BASE_URL, TEST_PATH);
final Map<String, String> props = new HashMap<String, String>();
props.put("jcr:primaryType", nodeType);
if (moreProperties != null) {
for (int i = 0; i < moreProperties.length; i += 2) {
props.put(moreProperties[i], moreProperties[i + 1]);
}
}
final String testNodePath = TEST_PATH + "/test_" + counter.incrementAndGet();
testNodeUrl = testClient.createNode(HTTP_BASE_URL + testNodePath, props);
toDelete.add(testNodeUrl);
{
// No script -> default rendering
final String content = getContent(testNodeUrl + ".html", CONTENT_TYPE_HTML);
assertContains(content, "dumped by HtmlRenderer");
}
{
// With script -> custom rendering based on mapping of JCR
// node type to Sling resource type
final String scriptPath = "/apps/" + nodeType.replaceAll(":", "/");
testClient.mkdirs(HTTP_BASE_URL, scriptPath);
toDelete.add(uploadTestScript(scriptPath, "nodetype-and-path.esp", "html.esp"));
final String content = getContent(testNodeUrl + ".html", CONTENT_TYPE_HTML);
assertContains(content, "RENDERED BY nodetype-and-path.esp");
assertContains(content, "TYPE " + nodeType);
assertContains(content, "PATH " + testNodePath);
}
}