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