private static void setup(Root root) throws Exception { Tree tree = root.getTree("/"); tree.addChild("c").setProperty("p", "base"); root.commit(); }
@Test(expected = CommitFailedException.class) public void oakIndexableFailing() throws IOException, CommitFailedException { registerNodeType(root, "oak3725-1.cnd"); Tree test = root.getTree("/").addChild("test"); test.setProperty(JCR_PRIMARYTYPE, NT_FOLDER, NAME); test.addChild("oak:index").setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME); root.commit(); }
@Test public void orderByScore() throws Exception { Tree idx = createIndex("test1", of("propa")); idx.addChild(PROP_NODE).addChild("propa"); root.commit(); Tree test = root.getTree("/").addChild("test"); test.addChild("a").setProperty("propa", "a"); root.commit(); assertQuery("select [jcr:path] from [nt:base] where propa is not null order by [jcr:score]", asList("/test/a")); }
@Test public void indexDefinitionBelowRoot3() throws Exception { Tree parent = root.getTree("/").addChild("test"); Tree idx = createIndex(parent, "test1", of("propa")); idx.addChild(PROP_NODE).addChild("propa"); root.commit(); parent.setProperty("propa", "a"); parent.addChild("test1").setProperty("propa", "a"); root.commit(); //asert that (1) result gets returned correctly, (2) parent isn't there, and (3) child is returned assertQuery("select [jcr:path] from [nt:base] as s where ISDESCENDANTNODE(s, '/test') and propa = 'a'", asList("/test/test1")); }
@Test public void testWithRelativeProperty() throws Exception{ Tree parent = root.getTree("/"); Tree idx = createIndex(parent, "test1", of("b/propa", "propb")); root.commit(); Tree test = parent.addChild("test2"); test.addChild("a").addChild("b").setProperty("propa", "a"); root.commit(); assertQuery("select [jcr:path] from [nt:base] as s where [b/propa] = 'a'", asList("/test2/a")); }
@Test public void indexDefinitionBelowRoot() throws Exception { Tree parent = root.getTree("/").addChild("test"); Tree idx = createIndex(parent, "test1", of("propa", "propb")); idx.setProperty(FulltextIndexConstants.EVALUATE_PATH_RESTRICTION, true); idx.addChild(PROP_NODE).addChild("propa"); root.commit(); Tree test = parent.addChild("test2"); test.addChild("a").setProperty("propa", "a"); root.commit(); assertQuery("select [jcr:path] from [nt:base] as s where ISDESCENDANTNODE(s, '/test') and propa = 'a'", asList("/test/test2/a")); }
@Test public void testMultiAndEquals() throws Exception { Tree c = root.getTree("/").addChild("content"); c.addChild("one").setProperty("prop", "aaa"); c.addChild("two").setProperty("prop", ImmutableList.of("aaa", "bbb", "ccc"), Type.STRINGS); c.addChild("three").setProperty("prop", ImmutableList.of("aaa", "bbb"), Type.STRINGS); root.commit(); assertQuery("//*[(@prop = 'aaa' and @prop = 'bbb' and @prop = 'ccc')]", "xpath", ImmutableList.of("/content/two")); }
@Test public void testMultiNotEqual() throws Exception { Tree c = root.getTree("/").addChild("content"); c.addChild("one").setProperty("prop", "value"); c.addChild("two").setProperty("prop", ImmutableList.of("aaa", "value", "bbb"), Type.STRINGS); c.addChild("three").setProperty("prop", ImmutableList.of("aaa", "bbb", "ccc"), Type.STRINGS); root.commit(); assertQuery("//*[@prop != 'value']", "xpath", ImmutableList.of("/content/two", "/content/three")); }
@Test public void propertyExistenceQuery() throws Exception { Tree idx = createIndex("test1", of("propa", "propb")); idx.addChild(PROP_NODE).addChild("propa"); root.commit(); Tree test = root.getTree("/").addChild("test"); test.addChild("a").setProperty("propa", "a"); test.addChild("b").setProperty("propa", "c"); test.addChild("c").setProperty("propb", "e"); root.commit(); assertQuery("select [jcr:path] from [nt:base] where propa is not null", asList("/test/a", "/test/b")); }
@Test public void containsPath() throws Exception { Tree test = root.getTree("/").addChild("test"); test.addChild("a").setProperty("name", "/parent/child/node"); root.commit(); StringBuffer stmt = new StringBuffer(); stmt.append("//*[jcr:contains(., '/parent/child')]"); assertQuery(stmt.toString(), "xpath", ImmutableList.of("/test/a")); }
@Test public void explainScoreTest() throws Exception { Tree idx = createIndex("test1", of("propa")); idx.addChild(PROP_NODE).addChild("propa"); root.commit(); Tree test = root.getTree("/").addChild("test"); test.addChild("a").setProperty("propa", "a"); root.commit(); String query = "select [oak:scoreExplanation] from [nt:base] where propa='a'"; List<String> result = executeQuery(query, SQL2, false, false); assertEquals(1, result.size()); assertTrue(result.get(0).contains("(MATCH)")); }
@Test public void oakIndexableSuccessful() throws IOException, CommitFailedException { registerNodeType(root, "oak3725-2.cnd"); Tree test = root.getTree("/").addChild("test"); test.setProperty(JCR_PRIMARYTYPE, NT_FOLDER, NAME); test.setProperty(JCR_MIXINTYPES, of(MIX_INDEXABLE), Type.NAMES); test.addChild("oak:index").setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME); root.commit(); }
@Test public void testMultiAndLike() throws Exception { Tree c = root.getTree("/").addChild("content"); c.addChild("one").setProperty("prop", "aaaBoom"); c.addChild("two").setProperty("prop", ImmutableList.of("aaaBoom", "bbbBoom", "cccBoom"), Type.STRINGS); c.addChild("three").setProperty("prop", ImmutableList.of("aaaBoom", "bbbBoom"), Type.STRINGS); root.commit(); assertQuery("//*[(jcr:like(@prop, 'aaa%') and jcr:like(@prop, 'bbb%') and jcr:like(@prop, 'ccc%'))]", "xpath", ImmutableList.of("/content/two")); }
@Test public void testLowercaseOnArrays() throws Exception { // OAK-1829 Tree content = root.getTree("/").addChild("content"); content.setProperty("array", Arrays.asList("X", "Y"), Type.STRINGS); root.commit(); assertQuery("//*[jcr:like(fn:lower-case(@array), '%x%')]", "xpath", Arrays.asList("/content")); }
@Test public void containsPathNum() throws Exception { Tree test = root.getTree("/").addChild("test"); Tree a = test.addChild("a"); a.setProperty("name", "/segment1/segment2/segment3"); root.commit(); StringBuffer stmt = new StringBuffer(); stmt.append("//*[jcr:contains(., '/segment1/segment2')]"); assertQuery(stmt.toString(), "xpath", ImmutableList.of("/test/a")); }
@Test public void indexDefinitionBelowRoot2() throws Exception { Tree parent = root.getTree("/").addChild("test"); Tree idx = createIndex(parent, "test1", of("propa", "propb")); idx.setProperty(FulltextIndexConstants.EVALUATE_PATH_RESTRICTION, true); idx.addChild(PROP_NODE).addChild("propa"); root.commit(); Tree test = parent.addChild("test2").addChild("test3"); test.addChild("a").setProperty("propa", "a"); root.commit(); assertQuery("select [jcr:path] from [nt:base] as s where ISDESCENDANTNODE(s, '/test/test2') and propa = 'a'", asList("/test/test2/test3/a")); }
@Test public void testAddExistingNode() throws CommitFailedException { theirRoot.getTree("/").addChild("n").setProperty("p", THEIR_VALUE); ourRoot.getTree("/").addChild("n").setProperty("p", OUR_VALUE); theirRoot.commit(); ourRoot.commit(); Tree n = ourRoot.getTree("/n"); assertTrue(n.exists()); assertEquals(OUR_VALUE, n.getProperty("p").getValue(STRING)); }