Author: echatellier Date: 2012-01-25 15:16:39 +0100 (Wed, 25 Jan 2012) New Revision: 1367 Url: http://nuiton.org/repositories/revision/wikitty/1367 Log: Refactor import/export tests. Added: trunk/wikitty-api/src/test/resources/xml/ trunk/wikitty-api/src/test/resources/xml/importclient.xml Removed: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/ElementNode.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java trunk/wikitty-api/src/test/resources/csv/importclient.csv Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/ElementNode.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/ElementNode.java 2012-01-25 13:22:20 UTC (rev 1366) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/ElementNode.java 2012-01-25 14:16:39 UTC (rev 1367) @@ -26,10 +26,9 @@ /** * Represente un element pour les recherches sur les arbres. Vous devez utiliser - * <li> {@link Element#NODE_BRANCH} utilise pour savoir si un objet est attache a un noeud ou un sous noeud - * <li> {@link Element#NODE_ROOT} utilise pour creer une condition sur le noeud root de l'arbre - * <li> {@link Element#NODE_PARENTS} utilise pour creer une condition sur un noeud ou un de ses peres - * <li> {@link Element#NODE_DEPTH} utilise pour creer une condition sur la profondeur d'un noeud (root=1) + * <li> {@link ElementNode#FIELD_NODE_ROOT} utilise pour creer une condition sur le noeud root de l'arbre + * <li> {@link ElementNode#FIELD_NODE_PATH} utilise pour creer une condition sur un noeud ou un de ses peres + * <li> {@link ElementNode#FIELD_NODE_DEPTH} utilise pour creer une condition sur la profondeur d'un noeud (root=1) * @author poussin * @version $Revision$ * @@ -49,6 +48,4 @@ protected ElementNode(String v) { super(v); } - - } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2012-01-25 13:22:20 UTC (rev 1366) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/Wikitty.java 2012-01-25 14:16:39 UTC (rev 1367) @@ -88,6 +88,7 @@ * Replace all field of current wikitty with field found in w. * This two wikitty must have same id if force is false * @param w wikitty where we take information + * @param force */ void replaceWith(Wikitty w, boolean force); @@ -333,6 +334,8 @@ /** * get the value of and field given its fqn, if this field doesn't exists * null is returned + * @param fqFieldName + * @return */ Object getFqField(String fqFieldName); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java 2012-01-25 13:22:20 UTC (rev 1366) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java 2012-01-25 14:16:39 UTC (rev 1367) @@ -26,6 +26,8 @@ package org.nuiton.wikitty; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -52,10 +54,6 @@ import org.nuiton.wikitty.query.WikittyQueryMaker; import org.nuiton.wikitty.query.WikittyQueryParser; import org.nuiton.wikitty.query.WikittyQueryResult; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.search.PagedResult; -import org.nuiton.wikitty.search.Search; -import org.nuiton.wikitty.search.operators.Like; import org.nuiton.wikitty.test.Category; import org.nuiton.wikitty.test.Product; @@ -154,8 +152,6 @@ */ @Test public void testExportXml() { - assumeTrueSearchEngineCanRunTest(); // facets - WikittyImportExportService ieService = new WikittyImportExportService(wikittyClient); WikittyQuery query = new WikittyQueryMaker().eq(Element.EXTENSION, WikittyTreeNode.EXT_WIKITTYTREENODE).end(); String xmlExport = ieService.syncExportAllByQuery(FORMAT.XML, query); @@ -169,6 +165,29 @@ } /** + * Import le fichier importclient.xml qui correspond aux mêmes données + * que les fichiers importclient.csv et importtree*.csv. + * + * Après l'import on se retourve donc normalement avec les mêmes données + * que si l'on avait appelé la methode {@link #importClients()}. + * @throws IOException + */ + @Test + public void testImportXml() throws IOException { + WikittyImportExportService ieService = new WikittyImportExportService(wikittyClient); + InputStream is = WikittyClientTest.class.getResourceAsStream("/xml/importclient.xml"); + InputStreamReader reader = new InputStreamReader(is); + ieService.syncImport(FORMAT.XML, reader); + reader.close(); + + Wikitty wClient = wikittyClient.restore("fbcc8aed-7f67-4e3c-a9aa-221373765f8d"); + Assert.assertEquals("Entreprise dupont", wClient.getFieldAsString("Client", "name")); + + WikittyTreeNode node = wikittyClient.restore(WikittyTreeNode.class, "0d13cb0b-bc06-431c-9438-7bcb357f45da"); + Assert.assertEquals("MySubNode", node.getName()); + } + + /** * Test le resultat attendu d'un export CSV. */ @Test Deleted: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2012-01-25 13:22:20 UTC (rev 1366) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/conform/ImportExportTest.java 2012-01-25 14:16:39 UTC (rev 1367) @@ -1,190 +0,0 @@ -/* - * #%L - * Wikitty :: api - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ -package org.nuiton.wikitty.conform; - -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; -import static junit.framework.Assert.fail; - -import java.io.ByteArrayInputStream; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.Before; -import org.junit.Test; -import org.nuiton.util.ApplicationConfig; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.entities.Wikitty; -import org.nuiton.wikitty.WikittyConfig; -import org.nuiton.wikitty.addons.WikittyImportExportService; -import org.nuiton.wikitty.search.operators.Element; -import org.nuiton.wikitty.search.Search; -import org.w3c.dom.Document; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -public class ImportExportTest extends AbstractTestConformance { - - private static Log log = LogFactory.getLog(ImportExportTest.class); - - protected WikittyImportExportService ieService; - - private ApplicationConfig config = null; - - @Override - public ApplicationConfig getConfig() { - if (config == null) { - config = WikittyConfig.getConfig(); // default config for in memory -// String msg = "Try to passe test with " + config.getPrintableConfig("wikitty.*", 50); -// log.info(msg); - } - return config; - } - - @Before - public void clearStorage() throws Exception { - getProxy().clear(); - } - - protected WikittyImportExportService getImportExportService() { - if (ieService == null) { - ApplicationConfig config = WikittyConfig.getConfig(); - ieService = new WikittyImportExportService( - config, null, getWikittyService()); - } - return ieService; - } - - @Test - public void testExport() throws Exception { - final List<Wikitty> wikitties = createSampleWikitty(getWikittyService()); - - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, AbstractTestConformance.EXTNAME).criteria(); - String result = getImportExportService().syncExportAllByCriteria( - WikittyImportExportService.FORMAT.XML, criteria); - log.debug("[XML] " + result); - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse( new ByteArrayInputStream(result.getBytes()) ); - - Node rootNode = document.getChildNodes().item(0); - // check root node ... - assertEquals("wikitty", rootNode.getNodeName()); - - // check childs ... - acceptNodeList(rootNode.getChildNodes(), new NodeVisitor() { - public void visitNode( Node node, Map<String, String> attrs ) { - String nodeName = node.getNodeName(); - if ( "extension".equals(nodeName) ) { - assertEquals( "1.0", attrs.get("version") ); - assertEquals( "wikittyExt", attrs.get("name") ); - } else if ( "object".equals(nodeName) ) { - Wikitty wikitty = null; - String id = attrs.get("id"); - for ( Wikitty w : wikitties ) { - if ( w.getId().equals(id) ) { - wikitty = w; break; - } - } - assertNotNull( wikitty ); - assertEquals( "1.0", attrs.get("version") ); - assertEquals( "wikittyExt[1.0]", attrs.get("extensions") ); - wikitties.remove( wikitty ); - } else { - fail( "Node [" + node.getNodeName() + "] is neither an extension or an object" ); - } - - } - }); - - assertTrue( "some objects were not exported ...", wikitties.isEmpty() ); - } - - interface NodeVisitor { - public void visitNode( Node node, Map<String, String> attributes ); - } - - private void acceptNodeList( NodeList nodeList, NodeVisitor visitor ) { - int len = nodeList.getLength(); - Map<String, String> attrs = new HashMap<String, String>(); - for ( int i = 0; i < len; i ++) { - attrs.clear(); - Node node = nodeList.item(i); - if ( node.getNodeType() == Node.TEXT_NODE ) continue; - NamedNodeMap map = node.getAttributes(); - if ( map != null ) { - int attrLen = map.getLength(); - for( int j = 0; j < attrLen; j++ ) attrs.put(map.item(j).getNodeName(), map.item(j).getNodeValue()); - } - visitor.visitNode( node, attrs ); - } - } - - @Test - public void testImport() throws Exception { - String xml = - "<wikitty>" + - " <extension name='wikittyExt' version='1.0' requires=''>" + - " <field>STRING fieldName0[0-1]</field>" + - " <field>NUMERIC fieldName1[1-1]</field>" + - " <field>DATE fieldName2[1-1]</field>" + - " </extension>" + - " <object id='f4ef949b-09e4-438f-b359-2a4332771c81' version='1.0' extensions='wikittyExt[1.0]'>" + - " <wikittyExt.fieldName0>table</wikittyExt.fieldName0>" + - " <wikittyExt.fieldName1>3300</wikittyExt.fieldName1>" + - " <wikittyExt.fieldName2>1982-01-22T23:00:00.000+0000Z</wikittyExt.fieldName2>" + - " </object>" + - " <object id='7ca86742-5957-4659-b12f-4915cbef9193' version='1.0' extensions='wikittyExt[1.0]'>" + - " <wikittyExt.fieldName0>chaise</wikittyExt.fieldName0>" + - " <wikittyExt.fieldName1>113311</wikittyExt.fieldName1>" + - " <wikittyExt.fieldName2>2009-09-25T22:00:00.000+0000Z</wikittyExt.fieldName2>" + - " </object>" + - " <object id='77d7640c-573d-421c-a7e9-9b70bd025983' version='1.0' extensions='wikittyExt[1.0]'>" + - " <wikittyExt.fieldName0>bureau</wikittyExt.fieldName0>" + - " <wikittyExt.fieldName1>223322</wikittyExt.fieldName1>" + - " <wikittyExt.fieldName2>2029-12-24T23:00:00.000+0000Z</wikittyExt.fieldName2>" + - " </object>" + - "</wikitty>"; - - getImportExportService().syncImport(WikittyImportExportService.FORMAT.XML, xml); - - String[] ids = new String[] { - "f4ef949b-09e4-438f-b359-2a4332771c81", - "7ca86742-5957-4659-b12f-4915cbef9193", - "77d7640c-573d-421c-a7e9-9b70bd025983" - }; - List<Wikitty> wikitties = getProxy().restore(Arrays.asList(ids)); - assertEquals(3, wikitties.size()); - } -} Modified: trunk/wikitty-api/src/test/resources/csv/importclient.csv =================================================================== --- trunk/wikitty-api/src/test/resources/csv/importclient.csv 2012-01-25 13:22:20 UTC (rev 1366) +++ trunk/wikitty-api/src/test/resources/csv/importclient.csv 2012-01-25 14:16:39 UTC (rev 1367) @@ -1,2 +1,2 @@ "Wikitty.Id","Client.name" -"fbcc8aed-7f67-4e3c-a9aa-221373765f8d","Toto" +"fbcc8aed-7f67-4e3c-a9aa-221373765f8d","Entreprise dupont" Added: trunk/wikitty-api/src/test/resources/xml/importclient.xml =================================================================== --- trunk/wikitty-api/src/test/resources/xml/importclient.xml (rev 0) +++ trunk/wikitty-api/src/test/resources/xml/importclient.xml 2012-01-25 14:16:39 UTC (rev 1367) @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<wikitty> + <extension name='WikittyTreeNode' version='2.0'> + <tagvalues> version="2.0"</tagvalues> + <field>STRING name unique="true"</field> + <field>WIKITTY attachment[0-*] unique="true" version="2.0"</field> + <field>WIKITTY parent unique="true"</field> + </extension> + <extension name='Client' version='1.0'> + <tagvalues></tagvalues> + <field>STRING name</field> + </extension> + <object id='fbcc8aed-7f67-4e3c-a9aa-221373765f8d' version='0.1' extensions='Client[1.0]'> + <Client.name>Entreprise dupont</Client.name> + </object> + <object id='4f6fc798-41f8-48d7-9398-119ef6ab02b6' version='0.1' extensions='WikittyTreeNode[2.0]'> + <WikittyTreeNode.name>MyRootNode</WikittyTreeNode.name> + </object> + <extension name='Tag' version='1.0'> + <tagvalues></tagvalues> + <field>STRING tags</field> + </extension> + <object id='1142aa4c-af5a-4264-9918-9f72d9ef9d59' version='0.3' extensions='Tag[1.0],WikittyTreeNode[2.0]'> + <WikittyTreeNode.parent>4f6fc798-41f8-48d7-9398-119ef6ab02b6</WikittyTreeNode.parent> + <WikittyTreeNode.attachment>fbcc8aed-7f67-4e3c-a9aa-221373765f8d</WikittyTreeNode.attachment> + <WikittyTreeNode.name>MyTreeNode</WikittyTreeNode.name> + </object> + <object id='0d13cb0b-bc06-431c-9438-7bcb357f45da' version='0.2' extensions='WikittyTreeNode[2.0]'> + <WikittyTreeNode.parent>1142aa4c-af5a-4264-9918-9f72d9ef9d59</WikittyTreeNode.parent> + <WikittyTreeNode.name>MySubNode</WikittyTreeNode.name> + </object> +</wikitty> \ No newline at end of file