X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Funit%2FIndependentDbTestCase.java;h=bd6b2f993109374b98e472821da0284967ab30fa;hb=4226558ccaf4d40b55d5d8492d0ef3476dfdf0c9;hp=067ae6cef5ca0b39750a72c25357c468756c0019;hpb=4a32164c4b6e1b1fced50f37e503965c0e3843a9;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java index 067ae6cef..bd6b2f993 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/IndependentDbTestCase.java @@ -10,11 +10,14 @@ import org.dbunit.DatabaseUnitException; import org.dbunit.IDatabaseTester; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ReplacementDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.operation.DatabaseOperation; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; +import org.apache.commons.io.IOUtils; + import org.hibernate.tool.hbm2ddl.SchemaExport; import org.argeo.slc.core.SlcException; @@ -71,7 +74,7 @@ public abstract class IndependentDbTestCase extends AbstractSpringTestCase { * returns dataSource. */ protected String getDataSourceBeanName() { - return "dataSource"; + return "slcDefault.dataSource.inMemoryTestHSQL"; } /** @@ -80,16 +83,57 @@ public abstract class IndependentDbTestCase extends AbstractSpringTestCase { * {@link #getDataSetResource()} */ protected IDataSet createDataSet() { + InputStream in = null; try { - InputStream in = getDataSetResource().getInputStream(); - IDataSet dataSet = new FlatXmlDataSet(in); - in.close(); + in = getDataSetResource().getInputStream(); + String[] replaceStrings = getReplacementStrings(); + IDataSet dataSet; + if (replaceStrings.length == 0) { + dataSet = new FlatXmlDataSet(in); + } else { + dataSet = new ReplacementDataSet(new FlatXmlDataSet(in)); + for (String str : replaceStrings) { + replace((ReplacementDataSet) dataSet, str); + } + } return dataSet; } catch (Exception e) { throw new SlcException("Cannot create data set", e); + } finally { + IOUtils.closeQuietly(in); } } + /** + * To be overridden. Return an empty array by default. + * + * @return the array of strings to replace in the dataset + */ + protected String[] getReplacementStrings() { + return new String[0]; + } + + /** + * Set the object replacing the given string. To be overridden. Does nothing + * by default. + */ + protected void replace(ReplacementDataSet dataSet, String str) + throws Exception { + + } + + /** + * Replace the given string by the content of the resource with the same + * name in the same package, as a byte array. + */ + protected void replaceByRessource(ReplacementDataSet dataSet, String str) + throws Exception { + Resource zipResource = new ClassPathResource(inPackage(str)); + + dataSet.addReplacementObject(str, IOUtils.toByteArray(zipResource + .getInputStream())); + } + /** * The resource of the data set to load. The default implementation loads a * ClassPathResource located at