From: <die...@us...> - 2010-03-19 07:58:23
|
Revision: 2153 http://openutils.svn.sourceforge.net/openutils/?rev=2153&view=rev Author: diego_schivo Date: 2010-03-19 07:58:17 +0000 (Fri, 19 Mar 2010) Log Message: ----------- CRIT-9 unit tests of Restrictions.contains with search-engine syntax enabled Modified Paths: -------------- trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java Modified: trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java =================================================================== --- trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java 2010-03-19 07:45:10 UTC (rev 2152) +++ trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/JcrContainsCriteriaSearchTest.java 2010-03-19 07:58:17 UTC (rev 2153) @@ -7,6 +7,7 @@ import info.magnolia.cms.core.Content; import info.magnolia.context.MgnlContext; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -40,14 +41,39 @@ super.setUp(); - bootstrapSingleResource("/crit-bootstrap/website.jcr-contains.xml"); + bootstrapSingleResource("/crit-bootstrap/website.contains.xml"); MgnlContext.getHierarchyManager(ContentRepository.WEBSITE).save(); } @Test + public void testLoremAndAmet() throws Exception + { + Criteria criteria = criteria("lorem amet", false); + AdvancedResult advResult = criteria.execute(); + Assert.assertNotNull(advResult); + Assert.assertEquals(1, advResult.getTotalSize()); + ResultIterator<AdvancedResultItem> items = advResult.getItems(); + AdvancedResultItem item = items.next(); + Assert.assertEquals("Lorem ipsum dolor sit amet", item.getTitle()); + } + + @Test + public void testSitAndNotAmet() throws Exception + { + Criteria criteria = criteria("sit -amet", false); + AdvancedResult advResult = criteria.execute(); + Assert.assertNotNull(advResult); + Assert.assertEquals(1, advResult.getTotalSize()); + ResultIterator<AdvancedResultItem> items = advResult.getItems(); + AdvancedResultItem item = items.next(); + Assert.assertEquals("Lorem ipsum dolor sit", item.getTitle()); + } + + @Test public void testTest1() throws Exception { - Criteria criteria = criteria("test?"); + String textEnteredByUser = "test?"; + Criteria criteria = criteria(textEnteredByUser, true); Assert.assertEquals("//*[((@jcr:primaryType='mgnl:content')and(jcr:contains(@title,'test\\?')))]", StringUtils .remove(criteria.toXpathExpression(), ' ')); AdvancedResult advResult = null; @@ -69,7 +95,8 @@ @Test public void testTest2() throws Exception { - Criteria criteria = criteria("te?st"); + String textEnteredByUser = "te?st"; + Criteria criteria = criteria(textEnteredByUser, true); // Assert.assertEquals("//*[((@jcr:primaryType='mgnl:content')and(jcr:contains(@title,'te\\?st')))]", StringUtils // .remove(criteria.toXpathExpression(), ' ')); AdvancedResult advResult = null; @@ -91,7 +118,8 @@ @Test public void testMilano() throws Exception { - Criteria criteria = criteria("\"Milano\""); + String textEnteredByUser = "\"Milano\""; + Criteria criteria = criteria(encode(textEnteredByUser), true); // Assert.assertEquals("//*[((@jcr:primaryType='mgnl:content')and(jcr:contains(@title,'\\\"Milano\\\"')))]", StringUtils // .remove(criteria.toXpathExpression(), ' ')); AdvancedResult advResult = null; @@ -110,12 +138,21 @@ Assert.assertEquals("hello \\\"Milano\\\" world", item.getTitle()); } - private Criteria criteria(String titleSearch) + private String encode(String textEnteredByUser) { + return StringUtils.replaceEach(textEnteredByUser, new String[]{ + "\"", "-" + }, new String[]{ + "\\\"", "\\-" + }); + } + + private Criteria criteria(String titleSearch, boolean escape) + { Criteria criteria = JCRCriteriaFactory.createCriteria().setWorkspace(ContentRepository.WEBSITE); criteria.setBasePath(StringUtils.EMPTY); criteria.add(Restrictions.eq("@jcr:primaryType", "mgnl:content")); - criteria.add(Restrictions.contains("@title", titleSearch)); + criteria.add(Restrictions.contains("@title", titleSearch, escape)); return criteria; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |