r1344 - in trunk/wikitty-api/src/test/java/org/nuiton/wikitty: . addons/importexport
Author: echatellier Date: 2012-01-20 10:58:24 +0100 (Fri, 20 Jan 2012) New Revision: 1344 Url: http://nuiton.org/repositories/revision/wikitty/1344 Log: Add more tests about import/export. Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientAbstractTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientAbstractTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientAbstractTest.java 2012-01-19 17:26:37 UTC (rev 1343) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientAbstractTest.java 2012-01-20 09:58:24 UTC (rev 1344) @@ -41,6 +41,11 @@ import org.nuiton.util.ApplicationConfig; import org.nuiton.wikitty.addons.WikittyImportExportService; import org.nuiton.wikitty.addons.WikittyImportExportService.FORMAT; +import org.nuiton.wikitty.entities.ExtensionFactory; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyExtension; +import org.nuiton.wikitty.entities.WikittyImpl; +import org.nuiton.wikitty.entities.WikittyTypes; import org.nuiton.wikitty.services.WikittyServiceInMemory; import org.nuiton.wikitty.test.CatalogNode; import org.nuiton.wikitty.test.CatalogNodeImpl; @@ -114,6 +119,7 @@ wikittyClient = getWikittyClient(); wikittyClient.clear(); addTestDataInClient(wikittyClient); + addManualExtension(wikittyClient); } /** @@ -124,7 +130,7 @@ * @param wikittyClient wikitty client * @throws ParseException */ - protected void addTestDataInClient(WikittyClient wikittyClient) throws ParseException { + protected void addTestDataInClient(WikittyClient client) throws ParseException { // Categories Category sf = new CategoryImpl("sf", "science fiction"); @@ -132,7 +138,7 @@ Category society = new CategoryImpl("society", "société"); Category fantastic = new CategoryImpl("fan", "fantastique"); Category fantaisie = new CategoryImpl("hf", "heroique/fantaisie"); - wikittyClient.store(sf, society, fantastic, fantaisie, history); + client.store(sf, society, fantastic, fantaisie, history); // Product (multiple inheritance) Product book42 = new ProductImpl("Answer to life the universe and everything"); @@ -167,7 +173,7 @@ bookLan.setCategory(fantastic.getWikittyId()); bookLan.addColors("red", "yellow"); bookLan.setDate(df.parse("January 12, 2002")); - wikittyClient.store(book42, bookIndignez, bookLotr, bookLan); + client.store(book42, bookIndignez, bookLotr, bookLan); // some tree nodes CatalogNode rootNode = new CatalogNodeImpl("rootnode"); @@ -184,11 +190,49 @@ romanNode.addAttachment(book42.getWikittyId(), bookLotr.getWikittyId()); CatalogNode otherNode = new CatalogNodeImpl("Everything else"); otherNode.setParent(rootNode.getWikittyId()); - wikittyClient.store(rootNode, livreNode, bdNode, newsNode, romanNode, otherNode); + client.store(rootNode, livreNode, bdNode, newsNode, romanNode, otherNode); } /** + * Create new "movies" extension. + * + * @param wikittyClient client + */ + protected void addManualExtension(WikittyClient client) { + // create extension + WikittyExtension movieExtension = ExtensionFactory.create("Movies", "1.0") + .addField("Name", WikittyTypes.STRING) + .addField("Author", WikittyTypes.STRING).maxOccur(Integer.MAX_VALUE) + .addField("Category", WikittyTypes.WIKITTY) + .addField("Year", WikittyTypes.STRING) + .extension(); + client.storeExtension(movieExtension); + + // create wikitty movies + Wikitty dieHardMovie = new WikittyImpl(); + dieHardMovie.addExtension(movieExtension); + dieHardMovie.setField("Movies", "Name", "Die hard 4"); + dieHardMovie.addToField("Movies", "Author", "Willis"); + dieHardMovie.addToField("Movies", "Year", "2009"); + + Wikitty edgarMovie = new WikittyImpl(); + edgarMovie.addExtension(movieExtension); + edgarMovie.setField("Movies", "Name", "J. Edgar"); + edgarMovie.addToField("Movies", "Author", "Eastwood"); + edgarMovie.addToField("Movies", "Year", "2011"); + + Wikitty dnrMovie = new WikittyImpl(); + dnrMovie.addExtension(movieExtension); + dnrMovie.setField("Movies", "Name", "The Dark Knight Rises"); + dnrMovie.addToField("Movies", "Author", "Nolan"); + dnrMovie.addToField("Movies", "Year", "2012"); + + client.store(dieHardMovie, edgarMovie); + } + + /** * Import books from csv files. + * * @throws IOException */ protected void importBooks() throws IOException { @@ -204,4 +248,38 @@ IOUtils.closeQuietly(reader); } } + + /** + * Import books from csv files. + * + * @throws IOException + */ + protected void importClients() throws IOException { + + // client and tag extensions (used in some imports) + wikittyClient.storeExtension(new WikittyExtension("Client", "1.0", + WikittyUtil.buildFieldMapExtension( + "String name"))); + wikittyClient.storeExtension(new WikittyExtension("Tag", "1.0", + WikittyUtil.buildFieldMapExtension( + "String tags"))); + + WikittyImportExportService ieService = new WikittyImportExportService(wikittyClient); + + String[] importFiles = { + "/csv/importclient.csv", + "/csv/importtree.csv", + "/csv/importtree2.csv"}; + for (String importFile : importFiles) { + InputStreamReader reader = null; + try { + InputStream is = WikittyClientAbstractTest.class.getResourceAsStream(importFile); + reader = new InputStreamReader(is); + ieService.syncImport(FORMAT.CSV, reader); + reader.close(); + } finally { + IOUtils.closeQuietly(reader); + } + } + } } 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-19 17:26:37 UTC (rev 1343) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyClientTest.java 2012-01-20 09:58:24 UTC (rev 1344) @@ -37,6 +37,7 @@ import org.nuiton.wikitty.query.WikittyQueryMaker; import org.nuiton.wikitty.query.WikittyQueryParser; import org.nuiton.wikitty.query.WikittyQueryResult; +import org.nuiton.wikitty.test.Category; import org.nuiton.wikitty.test.Product; /** @@ -117,6 +118,18 @@ } /** + * Test la recherche sur les extensions et wikitty crée manuelement. + */ + @Test + public void testFindQueryOnMovies() { + // The Dark Knight Rises + // Die hard 4 + WikittyQuery query = new WikittyQueryMaker().eq("Movies.name", "*ar*").end(); + WikittyQueryResult<String> results = wikittyClient.findAllByQuery(query); + Assert.assertEquals(2, results.getAll().size()); + } + + /** * Test le resultat attendu d'un export XML. */ @Test @@ -145,7 +158,6 @@ WikittyImportExportService ieService = new WikittyImportExportService(wikittyClient); WikittyQuery query = new WikittyQueryMaker().eq(Element.EXTENSION, WikittyTreeNode.EXT_WIKITTYTREENODE).end(); String csvExport = ieService.syncExportAllByQuery(FORMAT.CSV, query); - System.out.println(csvExport); // extension definition is present in xml export Assert.assertTrue(csvExport.startsWith("\"Wikitty.Id\",\"Wikitty.Ext\",\"WikittyTreeNode.attachment\",\"WikittyTreeNode.name\",\"WikittyTreeNode.parent\"")); @@ -161,11 +173,76 @@ * @throws IOException */ @Test - public void testImportCSV() throws IOException { + public void testImportCSVBooks() throws IOException { importBooks(); // 13 books WikittyQuery query = new WikittyQueryMaker().eq(Element.EXTENSION, Product.EXT_PRODUCT).end(); WikittyQueryResult<Product> results = wikittyClient.findAllByQuery(Product.class, query); Assert.assertEquals(4 + 13, results.getTotalResult()); } + + /** + * Test dans l'import csv que les request de liaisons d'elements + * fonctionne. + * + * Les livres sont liés à des categories. + * + * @throws IOException + */ + @Test + public void testImportCSVBooksLinks() throws IOException { + importBooks(); + + WikittyQuery query = new WikittyQueryMaker().eq(Product.ELEMENT_FIELD_PRODUCT_NAME, "Da vinci code").end(); + Product product = wikittyClient.findByQuery(Product.class, query); + String categoryId = product.getCategory(); + Category category = wikittyClient.restore(Category.class, categoryId); + Assert.assertEquals("science fiction", category.getName()); + } + + /** + * Test les requetage après l'import client. + * + * @throws IOException + */ + @Test + public void testImportClients() throws IOException { + importClients(); + + // test extension support + WikittyQuery query = new WikittyQueryMaker().eq(Element.EXTENSION, "Tag").end(); + WikittyQueryResult<String> results = wikittyClient.findAllByQuery(query); + Assert.assertEquals(1, results.getTotalResult()); + + // test normal import + WikittyQuery query2 = new WikittyQueryMaker().eq("Client.name", "Toto").end(); + WikittyQueryResult<String> results2 = wikittyClient.findAllByQuery(query2); + Assert.assertEquals(1, results2.getTotalResult()); + + // import attachment id that not exist, must be not imported + WikittyQuery query3 = new WikittyQueryMaker().eq(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_NAME, "MyTreeNode").end(); + WikittyQueryResult<WikittyTreeNode> results3 = wikittyClient.findAllByQuery(WikittyTreeNode.class, query3); + Assert.assertEquals(1, results3.getTotalResult()); + WikittyTreeNode myTreeNode = results3.get(0); + Assert.assertEquals(1, myTreeNode.getAttachment().size()); + + // test des requetes imbriquées + WikittyQuery query4 = new WikittyQueryMaker().eq(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_PARENT, myTreeNode.getWikittyId()).end(); + WikittyQueryResult<WikittyTreeNode> results4 = wikittyClient.findAllByQuery(WikittyTreeNode.class, query4); + Assert.assertEquals(1, results4.getTotalResult()); + WikittyTreeNode mySubNode = results4.get(0); + Assert.assertEquals("MySubNode", mySubNode.getName()); + System.out.println(mySubNode.getName()); + } + + /** + * Test que faire l'import 2 fois de suite cause une wikitty obselete + * exception. + * @throws IOException + */ + @Test(expected=WikittyException.class) + public void testImportTwice() throws IOException { + importClients(); + importClients(); + } } Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java 2012-01-19 17:26:37 UTC (rev 1343) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/addons/importexport/ImportExportCSVTest.java 2012-01-20 09:58:24 UTC (rev 1344) @@ -5,7 +5,7 @@ * $Id$ * $HeadURL$ * %% - * Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin + * Copyright (C) 2009 - 2012 CodeLutin, Benjamin Poussin, Chatellier Eric * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -25,33 +25,12 @@ package org.nuiton.wikitty.addons.importexport; -import java.net.URL; -import java.util.Collections; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; -import org.nuiton.util.ApplicationConfig; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.WikittyException; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.search.PagedResult; -import org.nuiton.wikitty.WikittyConfig; -import org.nuiton.wikitty.entities.WikittyTreeNode; -import org.nuiton.wikitty.entities.WikittyTreeNodeImpl; -import org.nuiton.wikitty.entities.WikittyExtension; -import org.nuiton.wikitty.addons.WikittyImportExportService; -import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.WikittyServiceFactory; -import org.nuiton.wikitty.WikittyUtil; -import org.nuiton.wikitty.search.operators.Element; -import org.nuiton.wikitty.search.Search; /** * Test for CSV import export class @@ -64,41 +43,6 @@ */ public class ImportExportCSVTest { - private final static Log log = LogFactory.getLog(ImportExportCSVTest.class); - - static protected WikittyService ws ; - - @BeforeClass - static public void loadWikittyService() throws Exception { - ApplicationConfig config = WikittyConfig.getConfig(); // default config for in memory -// String msg = "Try to passe test with "+ config.getPrintableConfig("wikitty.*", 50); -// log.info(msg); - ws = WikittyServiceFactory.buildWikittyService(config); - } - - @Before - public void clearStorage() throws Exception { - ws.clear(null); - } - - public WikittyService getWikittyService() { - return ws; - } - - public void setWikittyService(WikittyService wikittyService) { - this.ws = wikittyService; - } - - protected static final WikittyExtension extensionClient = - new WikittyExtension("Client", "1.0", - WikittyUtil.buildFieldMapExtension( - "String name")); - - protected static final WikittyExtension extensionTag = - new WikittyExtension("Tag", "1.0", - WikittyUtil.buildFieldMapExtension( - "String tags")); - /** * Test que le pattern match les bonnes choses. */ @@ -170,66 +114,4 @@ Assert.assertEquals(1, result.length); Assert.assertEquals("toto ?", result[0]); } - - /** - * Test l'import export. - */ - @Test - public void testImport() { - - // store required import extension - WikittyProxy proxy = new WikittyProxy(ws); - proxy.storeExtension(extensionClient); - proxy.storeExtension(WikittyTreeNodeImpl.extensionWikittyTreeNode); - proxy.storeExtension(extensionTag); - - // declare import service - ApplicationConfig config = WikittyConfig.getConfig(); - WikittyImportExportService wsImport = - new WikittyImportExportService(config, null, ws); - String[] importFiles = { - "/csv/importclient.csv", - "/csv/importtree.csv", - "/csv/importtree2.csv"}; - for (String importFile : importFiles) { - URL importFileURL = ImportExportCSVTest.class.getResource(importFile); - wsImport.syncImportFromUri(WikittyImportExportService.FORMAT.CSV, - importFileURL.toExternalForm()); - } - - // test extension support - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, extensionTag.getName()).criteria(); - PagedResult<String> pagedResult = ws.findAllByCriteria(null, Collections.singletonList(criteria)).get(0); - Assert.assertEquals(1, pagedResult.getNumFound()); - - // test normal import - Criteria criteria2 = Search.query().eq(extensionClient.getName() + ".name", "Toto").criteria(); - PagedResult<String> pagedResult2 = ws.findAllByCriteria(null, Collections.singletonList(criteria2)).get(0); - Assert.assertEquals(1, pagedResult2.getNumFound()); - - // import attachment id that not exist, must be not imported - Criteria criteria3 = Search.query().eq(WikittyTreeNode.FQ_FIELD_WIKITTYTREENODE_NAME, "MyTreeNode").criteria(); - PagedResult<WikittyTreeNode> pagedResult3 = proxy.findAllByCriteria(WikittyTreeNode.class, criteria3); - Assert.assertEquals(1, pagedResult3.getNumFound()); - WikittyTreeNode myTreeNode = pagedResult3.getFirst(); - Assert.assertEquals(1, myTreeNode.getAttachment().size()); - - // test des requetes imbriquées - Criteria criteria4 = Search.query().eq(WikittyTreeNode.FQ_FIELD_WIKITTYTREENODE_PARENT, myTreeNode.getWikittyId()).criteria(); - PagedResult<WikittyTreeNode> pagedResult4 = proxy.findAllByCriteria(WikittyTreeNode.class, criteria4); - Assert.assertEquals(1, pagedResult4.getNumFound()); - WikittyTreeNode mySubNode = pagedResult4.getFirst(); - Assert.assertEquals("MySubNode", mySubNode.getName()); - - // test wikitty is obselete exception - try { - for (String importFile : importFiles) { - URL importFileURL = ImportExportCSVTest.class.getResource(importFile); - wsImport.syncImportFromUri(WikittyImportExportService.FORMAT.CSV, - importFileURL.toExternalForm()); - } - } catch (WikittyException eee) { - Assert.fail(); - } - } }
participants (1)
-
echatellier@users.nuiton.org