Author: echatellier Date: 2010-06-01 10:41:41 +0200 (Tue, 01 Jun 2010) New Revision: 68 Url: http://nuiton.org/repositories/revision/wikitty/68 Log: Refactor package name from "org.nuiton.wikitty.test" to "org.nuiton.wikitty" Added: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/ Removed: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/api/ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/conform/ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/memory/ Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractTestApi.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ExtensionFactoryTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractTestApi.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/api/AbstractTestApi.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractTestApi.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.api; +package org.nuiton.wikitty.api; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/api/CommonTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.api; +package org.nuiton.wikitty.api; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; @@ -26,7 +26,7 @@ import org.nuiton.wikitty.WikittyExtension; import org.nuiton.wikitty.WikittyUtil; import org.nuiton.wikitty.FieldType.TYPE; -import org.nuiton.wikitty.test.conform.StorageTest; +import org.nuiton.wikitty.conform.StorageTest; /** * Test Wikitty, Extensions, Field and FieldType through the Wikitty Object Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ExtensionFactoryTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/api/ExtensionFactoryTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ExtensionFactoryTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.api; +package org.nuiton.wikitty.api; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/api/SearchCriteriaTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.api; +package org.nuiton.wikitty.api; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/api/WikittyUtilTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -15,7 +15,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -package org.nuiton.wikitty.test.api; +package org.nuiton.wikitty.api; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/conform/AbstractTestConformance.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/AbstractTestConformance.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.conform; +package org.nuiton.wikitty.conform; import java.text.ParseException; import java.text.SimpleDateFormat; Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/conform/ImportExportTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.conform; +package org.nuiton.wikitty.conform; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/conform/PerformanceTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/PerformanceTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -15,7 +15,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. *##%*/ -package org.nuiton.wikitty.test.conform; +package org.nuiton.wikitty.conform; import java.util.ArrayList; import java.util.Collection; Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/conform/SearchTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/SearchTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.conform; +package org.nuiton.wikitty.conform; import static junit.framework.Assert.assertEquals; Deleted: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/conform/StorageTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,469 +0,0 @@ -package org.nuiton.wikitty.test.conform; - -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertNull; -import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.Map.Entry; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.Assert; -import org.junit.Test; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.PagedResult; -import org.nuiton.wikitty.Tree; -import org.nuiton.wikitty.UpdateResponse; -import org.nuiton.wikitty.Wikitty; -import org.nuiton.wikitty.WikittyException; -import org.nuiton.wikitty.WikittyExtension; -import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.WikittyUtil; -import org.nuiton.wikitty.search.Search; -import org.nuiton.wikitty.TreeNodeImpl; -import org.nuiton.wikitty.TreeNode; - -public class StorageTest extends AbstractTestConformance { - - protected final static Log log = LogFactory.getLog(StorageTest.class); - - @Test - public void testStoreRestoreBasics() throws Exception { - Wikitty w = createBasicWikitty(); - String id = w.getId(); - ws.store( w ); - w = ws.restore( id ); - assertTrue( w.hasExtension(EXTNAME) ); - for ( int i = 0; i < 3; i++ ) { - assertTrue( w.hasField(EXTNAME, "fieldName" + i) ); - } - } - - @Test - public void testExtensionMethod() throws Exception { - ws.storeExtension(Arrays.asList(EXT_TEST)); - List<String> extIds = ws.getAllExtensionIds(); - log.debug("extIds: " + extIds); - assertEquals(1, extIds.size()); - WikittyExtension ext = ws.restoreExtension(extIds.get(0)); - assertEquals(EXT_TEST.getName(), ext.getName()); - assertEquals(EXT_TEST.getVersion(), ext.getVersion()); - assertEquals(EXT_TEST, ext); - } - - @Test - public void testExtensionRequires() throws Exception { - ws.storeExtension(Arrays.asList(EXT_REQUIRED, EXT_REQUIRES)); - List<String> extIds = ws.getAllExtensionsRequires(EXTREQUIRED); - log.debug("extIds: " + extIds); - assertEquals(1, extIds.size()); - - WikittyExtension ext = ws.restoreExtension(extIds.get(0)); - assertEquals(EXT_REQUIRES.getName(), ext.getName()); - assertEquals(EXT_REQUIRES.getVersion(), ext.getVersion()); - assertEquals(EXT_REQUIRES, ext); - } - - @Test - public void testStoreRestoreLists() throws Exception { - List<Wikitty> wikitties = new ArrayList<Wikitty>(); - List<String> ids = new ArrayList<String>(); - String[] wValues = new String[] { - // wikitty[ 0 ] - "fieldName0 = hello," + - "fieldName1 = 123456," + - "fieldName2 = " + format("23/01/1982"), - - // wikitty[ 1 ] - "fieldName0 = Bonzai !," + - "fieldName1 = 111111," + - "fieldName2 = " + format("26/09/2009"), - - // wikitty[ 2 ] - "fieldName0 = ho ho ho !," + - "fieldName1 = 987654," + - "fieldName2 = " + format("25/12/2029") - }; - for ( String wValue : wValues ) { - Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); - wikitties.add( w ); - ids.add( w.getId() ); - } - ws.store(wikitties); - - wikitties = ws.restore(ids); - int wIndex = 0; - for ( String wValue : wValues ) { - Wikitty w = wikitties.get(wIndex); - int i = 0; - for( Entry<String, String> keyValuePair : getKeyPairs(wValue) ) { - String fieldName = "fieldName" + i; - assertEquals(fieldName, keyValuePair.getKey()); - String errorMsg = "Error check field '" + fieldName + "' on wikitty[" + i + "]"; - switch( i ) { - case 0: // check fieldName0 - assertEquals( errorMsg, - keyValuePair.getValue(), w.getFieldAsString(EXTNAME, fieldName) ); - break; - case 1: // check fieldName1 - assertEquals( errorMsg, - Integer.parseInt(keyValuePair.getValue()), - w.getFieldAsInt(EXTNAME, fieldName) ); - break; - case 2: // check fieldName2 - assertEquals( errorMsg, - WikittyUtil.solrDateFormat.parseObject(keyValuePair.getValue()), - w.getFieldAsDate(EXTNAME, fieldName) ); - break; - default: - fail( "this structure should only get 3 elements, unexpected : " + keyValuePair.getKey() ); - } - i++; - } - wIndex++; - } - } - - @Test - public void testStoreRestoreNullEmpty() throws Exception { - Wikitty w = null; - // should be ignored (?) - try { - ws.store( w ); - fail("store(null) Must throw an exception !"); - } catch (Exception e) { - // OK ! - } - - w = new Wikitty(); - String id = w.getId(); - ws.store( w ); - w = ws.restore(id); - assertEquals( id, w.getId() ); - } - - @Test - public void testFieldConstraint() throws Exception { - WikittyExtension ext = new WikittyExtension("TestConstraint", "1", null, - WikittyUtil.buildFieldMapExtension( - "String id not null", - "String ext[0-n] unique", - "String other[0-n] unique not null" - )); - - ws.storeExtension(Arrays.asList(ext)); - Wikitty w = new Wikitty(); - w.addExtension(ext); - - try { - ws.store(w); - assertFalse("not null contraint don't work on String", true); - } catch (WikittyException eee) { - eee.printStackTrace(); - // ok id must not be null - } - - w.setField("TestConstraint", "id", "toto"); - try { - ws.store(w); - assertFalse("not null contraint don't work in Collection", true); - } catch (WikittyException eee) { - eee.printStackTrace(); - // ok id must not be null - } - - w.addToField("TestConstraint", "other", "titi"); - ws.store(w); - - w.addToField("TestConstraint", "ext", "tata"); - w.addToField("TestConstraint", "ext", "titi"); - ws.store(w); - - Wikitty w2 = ws.restore(w.getId()); - w2.addToField("TestConstraint", "ext", "tata"); // tata ne doit pas s'ajouter - w2.addToField("TestConstraint", "ext", "toto"); - - ws.store(w2); - Wikitty w3 = ws.restore(w.getId()); - - HashSet set = new HashSet(Arrays.asList("tata", "titi", "toto")); - assertEquals(set, w3.getFieldAsSet("TestConstraint", "ext", String.class)); - } - - @Test - // not in StorageTest because InMemory don't support find - public void testStoreFindAll() throws Exception { - - // create some wikitty to permit search test - List<Wikitty> wikitties = new ArrayList<Wikitty>(); - String[] wValues = new String[] { - // wikitty[ 0 ] - "fieldName0 = table," + - "fieldName1 = 003309," + - "fieldName2 = " + format("23/01/1982"), - - // wikitty[ 1 ] - "fieldName0 = chaise," + - "fieldName1 = 003309," + - "fieldName2 = " + format("26/09/2009"), - - // wikitty[ 2 ] - "fieldName0 = bureau," + - "fieldName1 = 223322," + - "fieldName2 = " + format("25/12/2029") - }; - for ( String wValue : wValues ) { - Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); - wikitties.add( w ); - } - ws.store(wikitties); - - // search test - Wikitty w = new Wikitty(); - w.addExtension(EXT_TEST); - w.setField(EXT_TEST.getName(), "fieldName1", "003309"); - Criteria criteria = Search.query(w).criteria() - .addSortDescending(EXT_TEST.getName() + ".fieldName0"); - PagedResult<Wikitty> resultFind = ws.findAllByCriteria(criteria); - - assertEquals(2, resultFind.size()); - assertEquals(wikitties.subList(0, 2), resultFind.getAll()); - } - - @Test - // not in StorageTest because InMemory don't support find - public void testStoreFindAllFacet() throws Exception { - - // create some wikitty to permit search test - List<Wikitty> wikitties = new ArrayList<Wikitty>(); - String[] wValues = new String[] { - // wikitty[ 0 ] - "fieldName0 = table," + - "fieldName1 = 663300," + - "fieldName2 = " + format("23/01/1982"), - - // wikitty[ 1 ] - "fieldName0 = chaise," + - "fieldName1 = 663300," + - "fieldName2 = " + format("26/09/2009"), - - // wikitty[ 2 ] - "fieldName0 = bureau," + - "fieldName1 = 223322," + - "fieldName2 = " + format("25/12/2029") - }; - for ( String wValue : wValues ) { - Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); - wikitties.add( w ); - } - ws.store(wikitties); - - // search test - Wikitty w = new Wikitty(); - w.addExtension(EXT_TEST); - w.setField(EXT_TEST.getName(), "fieldName1", "663300"); - Criteria criteria = Search.query(w).criteria() - .setFirstIndex(0).setEndIndex(WikittyService.ALL_ELEMENTS) - .addFacetField(EXT_TEST.getName()+".fieldName0") - .addFacetField(EXT_TEST.getName()+".fieldName1"); - PagedResult<Wikitty> resultFind = ws.findAllByCriteria(criteria); - - List<String> facetNames = new ArrayList<String>(resultFind.getFacetNames()); - Collections.sort(facetNames); - assertEquals(Arrays.asList(EXT_TEST.getName()+".fieldName0", - EXT_TEST.getName()+".fieldName1"), facetNames); - - // with must have 2 topic: table and chaise - assertEquals(2, resultFind.getTopic(EXT_TEST.getName()+".fieldName0").size()); - // with must have 1 topic: 663300 - assertEquals(1, resultFind.getTopic(EXT_TEST.getName()+".fieldName1").size()); - } - - @Test - // not in StorageTest because InMemory don't support find - public void testStoreFindDelete() throws Exception { - - // create some wikitty to permit search test - List<Wikitty> wikitties = new ArrayList<Wikitty>(); - String[] wValues = new String[] { - // wikitty[ 0 ] - "fieldName0 = table," + - "fieldName1 = 003301," + - "fieldName2 = " + format("23/01/1982"), - - // wikitty[ 1 ] - "fieldName0 = chaiseICI," + - "fieldName1 = 113312," + - "fieldName2 = " + format("26/09/2009"), - - // wikitty[ 2 ] - "fieldName0 = bureau," + - "fieldName1 = 223323," + - "fieldName2 = " + format("25/12/2029") - }; - for ( String wValue : wValues ) { - Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); - wikitties.add( w ); - } - Map<String, String> oldIdVersion = new HashMap<String, String>(); - for( Wikitty w : wikitties ) { - oldIdVersion.put(w.getId(), w.getVersion()); - } - UpdateResponse response = ws.store(wikitties); - for (Wikitty w : wikitties) { - response.update(w); - String v1 = w.getVersion(); - String v2 = oldIdVersion.get( w.getId() ); - assertNotNull( v1 ); - assertNotNull( v2 ); - assertTrue(WikittyUtil.versionGreaterThan(v1, v2)); - } - - // search test - Wikitty w = new Wikitty(); - w.addExtension(EXT_TEST); - w.setField(EXT_TEST.getName(), "fieldName0", "chaiseICI"); - Criteria criteria = Search.query(w).criteria(); - Wikitty resultFind = ws.findByCriteria(criteria); - - Wikitty wikittySource = wikitties.get(1); - assertEquals(w.getFieldAsString(EXT_TEST.getName(), "fieldName0"), - resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName0")); - - assertEquals(wikittySource.getId(), resultFind.getId()); - // test equals implantation method - assertEquals(wikittySource, resultFind); - - assertEquals(wikittySource.getFieldAsString(EXT_TEST.getName(), "fieldName0"), - resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName0")); - assertEquals(wikittySource.getFieldAsString(EXT_TEST.getName(), "fieldName1"), - resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName1")); - assertEquals(wikittySource.getFieldAsString(EXT_TEST.getName(), "fieldName2"), - resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName2")); - - - // test to find deleted wikitty - // test if solr index is coherent with database - Criteria criteria1 = Search.query().eq("id", wikittySource.getId()).criteria(); - Wikitty searchedWikitty1 = ws.findByCriteria(criteria1); - Assert.assertNotNull(searchedWikitty1); - - ws.delete(wikittySource.getId()); - Wikitty deletedObject = ws.restore(wikittySource.getId()); - assertNull(deletedObject); - - // test to find deleted wikitty - // test if solr index is coherent with database - Criteria criteria2 = Search.query().eq("id", wikittySource.getId()).criteria(); - Wikitty searchedWikitty2 = ws.findByCriteria(criteria2); - Assert.assertNull(searchedWikitty2); - } - - @Test - // not in StorageTest because InMemory don't support addLabel - public void testStoreAndLabel() throws Exception { - - // create some wikitty to permit search test - List<Wikitty> wikitties = createSampleWikitty(ws); - long ts = new Date().getTime(); - - // labelisation test - Wikitty w1 = wikitties.get(0); - ws.addLabel(w1.getId(), "titi"+ts); - ws.addLabel(w1.getId(), "toto"+ts); - - Wikitty w2 = wikitties.get(1); - ws.addLabel(w2.getId(), "tata"+ts); - ws.addLabel(w2.getId(), "titi"+ts); - - Wikitty w3 = wikitties.get(2); - ws.addLabel(w3.getId(), "tutu"+ts); - ws.addLabel(w3.getId(), "titi"+ts); - - Wikitty wt = ws.findByLabel("toto"+ts ); - - assertEquals(w1, wt); - - Set<String> labels = ws.findAllAppliedLabels(w2.getId()); - - assertEquals(new HashSet(Arrays.asList("tata"+ts, "titi"+ts)), labels); - } - - @Test - public void testStoreAndClassification() throws Exception { - // create some wikitty to permit search test - List<Wikitty> wikitties = createSampleWikitty(ws); - List<Wikitty> wikittyNodes = new ArrayList<Wikitty>(); - - TreeNodeImpl root = new TreeNodeImpl(); - wikittyNodes.add(root.getWikitty()); - root.setName("MyCategoryRoot"); - for ( int i = 0; i < 3; i++ ) { - TreeNodeImpl leaf = new TreeNodeImpl(); - wikittyNodes.add( leaf.getWikitty() ); - leaf.setName( "cat-"+i ); - leaf.setParent( root.getWikittyId() ); - // root.addChild( leaf.getWikittyId() ); - - for ( int j = 0; j < 5; j++ ) { - TreeNodeImpl subLeaf = new TreeNodeImpl(); - subLeaf.setName( "subcat-"+i+"-"+j ); - subLeaf.setParent( leaf.getWikittyId() ); - wikittyNodes.add( subLeaf.getWikitty() ); - // leaf.addChild( subLeaf.getWikittyId() ); - } - } - ws.store(wikittyNodes); // store treeNodes. - - Wikitty table = wikitties.get(0); - Wikitty chaise = wikitties.get(1); - Wikitty bureau = wikitties.get(2); - - assign( chaise, root, "cat-1/subcat-1-4" ); - assign( table, root, "cat-1" ); - assign( bureau, root, "cat-2/subcat-2-4" ); - - Tree t = ws.restoreTree( root.getWikitty().getId() ); - t.getName().equals("MyCategoryRoot"); - - - } - - private void assign(Wikitty wikitty, TreeNodeImpl root, String path) { - String[] nodeNames = path.split("/"); - TreeNodeImpl currentNode = root; - outerloop : for( String nodeName : nodeNames ) { - TreeNodeImpl node = new TreeNodeImpl(); - node.setName(nodeName); - - Criteria criteria = Search.query(node.getWikitty()).criteria() - .setFirstIndex(0).setEndIndex(WikittyService.ALL_ELEMENTS); - List<Wikitty> wikitties = ws.findAllByCriteria(criteria).getAll(); - for ( Wikitty child : wikitties ) { - if (!child.hasExtension(TreeNode.EXT_TREENODE)) { - continue; - } - node = new TreeNodeImpl(child); - if ( node.getName().equals(nodeName) ) { - currentNode = node; - continue outerloop; - } - } - fail( "Unable to find node " + nodeName + " inside " + currentNode.getName() ); - } - currentNode.addChildren( wikitty.getId() ); - ws.store(currentNode.getWikitty()); - } -} Copied: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java (from rev 67, trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/conform/StorageTest.java) =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java (rev 0) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/StorageTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -0,0 +1,469 @@ +package org.nuiton.wikitty.conform; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNull; +import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.fail; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Map.Entry; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.Tree; +import org.nuiton.wikitty.UpdateResponse; +import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.WikittyException; +import org.nuiton.wikitty.WikittyExtension; +import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.search.Search; +import org.nuiton.wikitty.TreeNodeImpl; +import org.nuiton.wikitty.TreeNode; + +public class StorageTest extends AbstractTestConformance { + + protected final static Log log = LogFactory.getLog(StorageTest.class); + + @Test + public void testStoreRestoreBasics() throws Exception { + Wikitty w = createBasicWikitty(); + String id = w.getId(); + ws.store( w ); + w = ws.restore( id ); + assertTrue( w.hasExtension(EXTNAME) ); + for ( int i = 0; i < 3; i++ ) { + assertTrue( w.hasField(EXTNAME, "fieldName" + i) ); + } + } + + @Test + public void testExtensionMethod() throws Exception { + ws.storeExtension(Arrays.asList(EXT_TEST)); + List<String> extIds = ws.getAllExtensionIds(); + log.debug("extIds: " + extIds); + assertEquals(1, extIds.size()); + WikittyExtension ext = ws.restoreExtension(extIds.get(0)); + assertEquals(EXT_TEST.getName(), ext.getName()); + assertEquals(EXT_TEST.getVersion(), ext.getVersion()); + assertEquals(EXT_TEST, ext); + } + + @Test + public void testExtensionRequires() throws Exception { + ws.storeExtension(Arrays.asList(EXT_REQUIRED, EXT_REQUIRES)); + List<String> extIds = ws.getAllExtensionsRequires(EXTREQUIRED); + log.debug("extIds: " + extIds); + assertEquals(1, extIds.size()); + + WikittyExtension ext = ws.restoreExtension(extIds.get(0)); + assertEquals(EXT_REQUIRES.getName(), ext.getName()); + assertEquals(EXT_REQUIRES.getVersion(), ext.getVersion()); + assertEquals(EXT_REQUIRES, ext); + } + + @Test + public void testStoreRestoreLists() throws Exception { + List<Wikitty> wikitties = new ArrayList<Wikitty>(); + List<String> ids = new ArrayList<String>(); + String[] wValues = new String[] { + // wikitty[ 0 ] + "fieldName0 = hello," + + "fieldName1 = 123456," + + "fieldName2 = " + format("23/01/1982"), + + // wikitty[ 1 ] + "fieldName0 = Bonzai !," + + "fieldName1 = 111111," + + "fieldName2 = " + format("26/09/2009"), + + // wikitty[ 2 ] + "fieldName0 = ho ho ho !," + + "fieldName1 = 987654," + + "fieldName2 = " + format("25/12/2029") + }; + for ( String wValue : wValues ) { + Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); + wikitties.add( w ); + ids.add( w.getId() ); + } + ws.store(wikitties); + + wikitties = ws.restore(ids); + int wIndex = 0; + for ( String wValue : wValues ) { + Wikitty w = wikitties.get(wIndex); + int i = 0; + for( Entry<String, String> keyValuePair : getKeyPairs(wValue) ) { + String fieldName = "fieldName" + i; + assertEquals(fieldName, keyValuePair.getKey()); + String errorMsg = "Error check field '" + fieldName + "' on wikitty[" + i + "]"; + switch( i ) { + case 0: // check fieldName0 + assertEquals( errorMsg, + keyValuePair.getValue(), w.getFieldAsString(EXTNAME, fieldName) ); + break; + case 1: // check fieldName1 + assertEquals( errorMsg, + Integer.parseInt(keyValuePair.getValue()), + w.getFieldAsInt(EXTNAME, fieldName) ); + break; + case 2: // check fieldName2 + assertEquals( errorMsg, + WikittyUtil.solrDateFormat.parseObject(keyValuePair.getValue()), + w.getFieldAsDate(EXTNAME, fieldName) ); + break; + default: + fail( "this structure should only get 3 elements, unexpected : " + keyValuePair.getKey() ); + } + i++; + } + wIndex++; + } + } + + @Test + public void testStoreRestoreNullEmpty() throws Exception { + Wikitty w = null; + // should be ignored (?) + try { + ws.store( w ); + fail("store(null) Must throw an exception !"); + } catch (Exception e) { + // OK ! + } + + w = new Wikitty(); + String id = w.getId(); + ws.store( w ); + w = ws.restore(id); + assertEquals( id, w.getId() ); + } + + @Test + public void testFieldConstraint() throws Exception { + WikittyExtension ext = new WikittyExtension("TestConstraint", "1", null, + WikittyUtil.buildFieldMapExtension( + "String id not null", + "String ext[0-n] unique", + "String other[0-n] unique not null" + )); + + ws.storeExtension(Arrays.asList(ext)); + Wikitty w = new Wikitty(); + w.addExtension(ext); + + try { + ws.store(w); + assertFalse("not null contraint don't work on String", true); + } catch (WikittyException eee) { + eee.printStackTrace(); + // ok id must not be null + } + + w.setField("TestConstraint", "id", "toto"); + try { + ws.store(w); + assertFalse("not null contraint don't work in Collection", true); + } catch (WikittyException eee) { + eee.printStackTrace(); + // ok id must not be null + } + + w.addToField("TestConstraint", "other", "titi"); + ws.store(w); + + w.addToField("TestConstraint", "ext", "tata"); + w.addToField("TestConstraint", "ext", "titi"); + ws.store(w); + + Wikitty w2 = ws.restore(w.getId()); + w2.addToField("TestConstraint", "ext", "tata"); // tata ne doit pas s'ajouter + w2.addToField("TestConstraint", "ext", "toto"); + + ws.store(w2); + Wikitty w3 = ws.restore(w.getId()); + + HashSet set = new HashSet(Arrays.asList("tata", "titi", "toto")); + assertEquals(set, w3.getFieldAsSet("TestConstraint", "ext", String.class)); + } + + @Test + // not in StorageTest because InMemory don't support find + public void testStoreFindAll() throws Exception { + + // create some wikitty to permit search test + List<Wikitty> wikitties = new ArrayList<Wikitty>(); + String[] wValues = new String[] { + // wikitty[ 0 ] + "fieldName0 = table," + + "fieldName1 = 003309," + + "fieldName2 = " + format("23/01/1982"), + + // wikitty[ 1 ] + "fieldName0 = chaise," + + "fieldName1 = 003309," + + "fieldName2 = " + format("26/09/2009"), + + // wikitty[ 2 ] + "fieldName0 = bureau," + + "fieldName1 = 223322," + + "fieldName2 = " + format("25/12/2029") + }; + for ( String wValue : wValues ) { + Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); + wikitties.add( w ); + } + ws.store(wikitties); + + // search test + Wikitty w = new Wikitty(); + w.addExtension(EXT_TEST); + w.setField(EXT_TEST.getName(), "fieldName1", "003309"); + Criteria criteria = Search.query(w).criteria() + .addSortDescending(EXT_TEST.getName() + ".fieldName0"); + PagedResult<Wikitty> resultFind = ws.findAllByCriteria(criteria); + + assertEquals(2, resultFind.size()); + assertEquals(wikitties.subList(0, 2), resultFind.getAll()); + } + + @Test + // not in StorageTest because InMemory don't support find + public void testStoreFindAllFacet() throws Exception { + + // create some wikitty to permit search test + List<Wikitty> wikitties = new ArrayList<Wikitty>(); + String[] wValues = new String[] { + // wikitty[ 0 ] + "fieldName0 = table," + + "fieldName1 = 663300," + + "fieldName2 = " + format("23/01/1982"), + + // wikitty[ 1 ] + "fieldName0 = chaise," + + "fieldName1 = 663300," + + "fieldName2 = " + format("26/09/2009"), + + // wikitty[ 2 ] + "fieldName0 = bureau," + + "fieldName1 = 223322," + + "fieldName2 = " + format("25/12/2029") + }; + for ( String wValue : wValues ) { + Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); + wikitties.add( w ); + } + ws.store(wikitties); + + // search test + Wikitty w = new Wikitty(); + w.addExtension(EXT_TEST); + w.setField(EXT_TEST.getName(), "fieldName1", "663300"); + Criteria criteria = Search.query(w).criteria() + .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS) + .addFacetField(EXT_TEST.getName()+".fieldName0") + .addFacetField(EXT_TEST.getName()+".fieldName1"); + PagedResult<Wikitty> resultFind = ws.findAllByCriteria(criteria); + + List<String> facetNames = new ArrayList<String>(resultFind.getFacetNames()); + Collections.sort(facetNames); + assertEquals(Arrays.asList(EXT_TEST.getName()+".fieldName0", + EXT_TEST.getName()+".fieldName1"), facetNames); + + // with must have 2 topic: table and chaise + assertEquals(2, resultFind.getTopic(EXT_TEST.getName()+".fieldName0").size()); + // with must have 1 topic: 663300 + assertEquals(1, resultFind.getTopic(EXT_TEST.getName()+".fieldName1").size()); + } + + @Test + // not in StorageTest because InMemory don't support find + public void testStoreFindDelete() throws Exception { + + // create some wikitty to permit search test + List<Wikitty> wikitties = new ArrayList<Wikitty>(); + String[] wValues = new String[] { + // wikitty[ 0 ] + "fieldName0 = table," + + "fieldName1 = 003301," + + "fieldName2 = " + format("23/01/1982"), + + // wikitty[ 1 ] + "fieldName0 = chaiseICI," + + "fieldName1 = 113312," + + "fieldName2 = " + format("26/09/2009"), + + // wikitty[ 2 ] + "fieldName0 = bureau," + + "fieldName1 = 223323," + + "fieldName2 = " + format("25/12/2029") + }; + for ( String wValue : wValues ) { + Wikitty w = createWikitty( wValue, EXTNAME, EXT_TEST ); + wikitties.add( w ); + } + Map<String, String> oldIdVersion = new HashMap<String, String>(); + for( Wikitty w : wikitties ) { + oldIdVersion.put(w.getId(), w.getVersion()); + } + UpdateResponse response = ws.store(wikitties); + for (Wikitty w : wikitties) { + response.update(w); + String v1 = w.getVersion(); + String v2 = oldIdVersion.get( w.getId() ); + assertNotNull( v1 ); + assertNotNull( v2 ); + assertTrue(WikittyUtil.versionGreaterThan(v1, v2)); + } + + // search test + Wikitty w = new Wikitty(); + w.addExtension(EXT_TEST); + w.setField(EXT_TEST.getName(), "fieldName0", "chaiseICI"); + Criteria criteria = Search.query(w).criteria(); + Wikitty resultFind = ws.findByCriteria(criteria); + + Wikitty wikittySource = wikitties.get(1); + assertEquals(w.getFieldAsString(EXT_TEST.getName(), "fieldName0"), + resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName0")); + + assertEquals(wikittySource.getId(), resultFind.getId()); + // test equals implantation method + assertEquals(wikittySource, resultFind); + + assertEquals(wikittySource.getFieldAsString(EXT_TEST.getName(), "fieldName0"), + resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName0")); + assertEquals(wikittySource.getFieldAsString(EXT_TEST.getName(), "fieldName1"), + resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName1")); + assertEquals(wikittySource.getFieldAsString(EXT_TEST.getName(), "fieldName2"), + resultFind.getFieldAsString(EXT_TEST.getName(), "fieldName2")); + + + // test to find deleted wikitty + // test if solr index is coherent with database + Criteria criteria1 = Search.query().eq("id", wikittySource.getId()).criteria(); + Wikitty searchedWikitty1 = ws.findByCriteria(criteria1); + Assert.assertNotNull(searchedWikitty1); + + ws.delete(wikittySource.getId()); + Wikitty deletedObject = ws.restore(wikittySource.getId()); + assertNull(deletedObject); + + // test to find deleted wikitty + // test if solr index is coherent with database + Criteria criteria2 = Search.query().eq("id", wikittySource.getId()).criteria(); + Wikitty searchedWikitty2 = ws.findByCriteria(criteria2); + Assert.assertNull(searchedWikitty2); + } + + @Test + // not in StorageTest because InMemory don't support addLabel + public void testStoreAndLabel() throws Exception { + + // create some wikitty to permit search test + List<Wikitty> wikitties = createSampleWikitty(ws); + long ts = new Date().getTime(); + + // labelisation test + Wikitty w1 = wikitties.get(0); + ws.addLabel(w1.getId(), "titi"+ts); + ws.addLabel(w1.getId(), "toto"+ts); + + Wikitty w2 = wikitties.get(1); + ws.addLabel(w2.getId(), "tata"+ts); + ws.addLabel(w2.getId(), "titi"+ts); + + Wikitty w3 = wikitties.get(2); + ws.addLabel(w3.getId(), "tutu"+ts); + ws.addLabel(w3.getId(), "titi"+ts); + + Wikitty wt = ws.findByLabel("toto"+ts ); + + assertEquals(w1, wt); + + Set<String> labels = ws.findAllAppliedLabels(w2.getId()); + + assertEquals(new HashSet(Arrays.asList("tata"+ts, "titi"+ts)), labels); + } + + @Test + public void testStoreAndClassification() throws Exception { + // create some wikitty to permit search test + List<Wikitty> wikitties = createSampleWikitty(ws); + List<Wikitty> wikittyNodes = new ArrayList<Wikitty>(); + + TreeNodeImpl root = new TreeNodeImpl(); + wikittyNodes.add(root.getWikitty()); + root.setName("MyCategoryRoot"); + for ( int i = 0; i < 3; i++ ) { + TreeNodeImpl leaf = new TreeNodeImpl(); + wikittyNodes.add( leaf.getWikitty() ); + leaf.setName( "cat-"+i ); + leaf.setParent( root.getWikittyId() ); + // root.addChild( leaf.getWikittyId() ); + + for ( int j = 0; j < 5; j++ ) { + TreeNodeImpl subLeaf = new TreeNodeImpl(); + subLeaf.setName( "subcat-"+i+"-"+j ); + subLeaf.setParent( leaf.getWikittyId() ); + wikittyNodes.add( subLeaf.getWikitty() ); + // leaf.addChild( subLeaf.getWikittyId() ); + } + } + ws.store(wikittyNodes); // store treeNodes. + + Wikitty table = wikitties.get(0); + Wikitty chaise = wikitties.get(1); + Wikitty bureau = wikitties.get(2); + + assign( chaise, root, "cat-1/subcat-1-4" ); + assign( table, root, "cat-1" ); + assign( bureau, root, "cat-2/subcat-2-4" ); + + Tree t = ws.restoreTree( root.getWikitty().getId() ); + t.getName().equals("MyCategoryRoot"); + + + } + + private void assign(Wikitty wikitty, TreeNodeImpl root, String path) { + String[] nodeNames = path.split("/"); + TreeNodeImpl currentNode = root; + outerloop : for( String nodeName : nodeNames ) { + TreeNodeImpl node = new TreeNodeImpl(); + node.setName(nodeName); + + Criteria criteria = Search.query(node.getWikitty()).criteria() + .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS); + List<Wikitty> wikitties = ws.findAllByCriteria(criteria).getAll(); + for ( Wikitty child : wikitties ) { + if (!child.hasExtension(TreeNode.EXT_TREENODE)) { + continue; + } + node = new TreeNodeImpl(child); + if ( node.getName().equals(nodeName) ) { + currentNode = node; + continue outerloop; + } + } + fail( "Unable to find node " + nodeName + " inside " + currentNode.getName() ); + } + currentNode.addChildren( wikitty.getId() ); + ws.store(currentNode.getWikitty()); + } +} Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/test/memory/InMemoryStorageTest.java 2010-05-31 09:44:30 UTC (rev 63) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2010-06-01 08:41:41 UTC (rev 68) @@ -1,4 +1,4 @@ -package org.nuiton.wikitty.test.memory; +package org.nuiton.wikitty.memory; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; @@ -22,8 +22,8 @@ import org.nuiton.wikitty.WikittyServiceInMemory; import org.nuiton.wikitty.WikittyUtil; import org.nuiton.wikitty.FieldType.TYPE; +import org.nuiton.wikitty.api.AbstractTestApi; import org.nuiton.wikitty.search.Search; -import org.nuiton.wikitty.test.api.AbstractTestApi; public class InMemoryStorageTest extends AbstractTestApi {
participants (1)
-
echatellier@users.nuiton.org