From 6f7fb45c027d38cd48de008b8fb553955d961505 Mon Sep 17 00:00:00 2001 From: rmpestano Date: Mon, 12 Sep 2016 15:54:20 -0300 Subject: [PATCH] refs #47 - removed sql logs - updated readme --- README.adoc | 31 +++++++++++++++++++ .../dbunit/rules/cdi/DataSetProcessor.java | 3 +- .../test/resources/META-INF/persistence.xml | 4 +-- .../com/github/dbunit/rules/DBUnitRule.java | 3 +- .../rules/exporter/DataSetExporterImpl.java | 6 ++-- .../rules/{ => exporter}/ExportDataSetIt.java | 30 +++++++++++++++++- .../test/resources/META-INF/persistence.xml | 24 +++++++------- .../src/main/resources/log4j.xml | 2 +- .../test/resources/META-INF/persistence.xml | 2 +- .../dbunit/rules/junit5/DBUnitExtension.java | 3 +- .../test/resources/META-INF/persistence.xml | 2 +- 11 files changed, 87 insertions(+), 23 deletions(-) rename core/src/test/java/com/github/dbunit/rules/{ => exporter}/ExportDataSetIt.java (89%) diff --git a/README.adoc b/README.adoc index f5cdf13..974d1e3 100644 --- a/README.adoc +++ b/README.adoc @@ -993,6 +993,37 @@ In order to export database state *after test* execution into datasets files one After execution of above test, all tables will be exported to a xml dataset. + +[TIP] +==== +You don't need `@ExportDataSet`, you can use DataSetExporter component programmatically: + +[source,java,linenums] +---- + @Test + @DataSet(cleanBefore=true) + public void shouldExportYMLDataSetWithoutAnnotations() throws SQLException, DatabaseUnitException{ + tx().begin(); + User u1 = new User(); + u1.setName("u1"); + em().persist(u1); + tx().commit(); + DataSetExporterImpl.getInstance().export(new DatabaseConnection(emProvider.connection()), <1> + new DataSetExportConfig().outputFileName("target/user.yml")); + File ymlDataSet = new File("target/user.yml"); + assertThat(ymlDataSet).exists(); + assertThat(contentOf(ymlDataSet)). + contains("USER:"+NEW_LINE + + " - ID: 1"+NEW_LINE + + " NAME: \"u1\""+NEW_LINE + ); + + } +---- +<1> DatabaseConnection is from DBUnit api and it needs a JDBC connection. + +==== + NOTE: *xml*, *yml*, *JSON*, *XLS* and *CSV* formats are supported. TIP: Full example above (and other related tests) can be https://github.com/rmpestano/dbunit-rules/blob/master/core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java#L35[found here^]. diff --git a/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java b/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java index 181bc87..c06c83c 100644 --- a/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java +++ b/cdi/src/main/java/com/github/dbunit/rules/cdi/DataSetProcessor.java @@ -124,8 +124,9 @@ public void exportDataSet(Method method) { if(outputName == null || "".equals(outputName.trim())){ outputName = method.getName().toLowerCase()+"."+exportConfig.getDataSetFormat().name().toLowerCase(); } + exportConfig.outputFileName(outputName); try { - DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig ,outputName); + DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig); } catch (Exception e) { java.util.logging.Logger.getLogger(getClass().getName()).log(Level.WARNING,"Could not export dataset after method "+method.getName(),e); } diff --git a/cdi/src/test/resources/META-INF/persistence.xml b/cdi/src/test/resources/META-INF/persistence.xml index c92c0d6..2442181 100644 --- a/cdi/src/test/resources/META-INF/persistence.xml +++ b/cdi/src/test/resources/META-INF/persistence.xml @@ -13,8 +13,8 @@ - - + diff --git a/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java b/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java index cfba2e7..1852ed4 100644 --- a/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java +++ b/core/src/main/java/com/github/dbunit/rules/DBUnitRule.java @@ -163,8 +163,9 @@ private void exportDataSet(DataSetExecutor executor, Description description) { if(outputName == null || "".equals(outputName.trim())){ outputName = description.getMethodName().toLowerCase()+"."+exportConfig.getDataSetFormat().name().toLowerCase(); } + exportConfig.outputFileName(outputName); try { - DataSetExporterImpl.getInstance().export(executor.getDBUnitConnection(),exportConfig ,outputName); + DataSetExporterImpl.getInstance().export(executor.getDBUnitConnection(),exportConfig); } catch (Exception e) { Logger.getLogger(getClass().getName()).log(Level.WARNING,"Could not export dataset after method "+description.getMethodName(),e); } diff --git a/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java b/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java index 2ce435f..3413db6 100644 --- a/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java +++ b/core/src/main/java/com/github/dbunit/rules/exporter/DataSetExporterImpl.java @@ -57,7 +57,7 @@ public static DataSetExporterImpl getInstance(){ return instance; } - public OutputStream export(DatabaseConnection databaseConnection, DataSetExportConfig dataSetExportConfig, String outputFile) throws SQLException, DatabaseUnitException { + public OutputStream export(DatabaseConnection databaseConnection, DataSetExportConfig dataSetExportConfig) throws SQLException, DatabaseUnitException { if (databaseConnection == null || databaseConnection.getConnection() == null || databaseConnection.getConnection().isClosed()) { throw new RuntimeException("Provide a valid connection to export datasets"); @@ -66,11 +66,13 @@ public OutputStream export(DatabaseConnection databaseConnection, DataSetExportC if (dataSetExportConfig == null) { dataSetExportConfig = new DataSetExportConfig(); } + + String outputFile = dataSetExportConfig.getOutputFileName(); if(outputFile == null || "".equals(outputFile)){ throw new RuntimeException("Provide output file name to export dataset."); } - + if(!outputFile.contains(".")){ outputFile = outputFile +"."+dataSetExportConfig.getDataSetFormat().name().toLowerCase(); } diff --git a/core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java b/core/src/test/java/com/github/dbunit/rules/exporter/ExportDataSetIt.java similarity index 89% rename from core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java rename to core/src/test/java/com/github/dbunit/rules/exporter/ExportDataSetIt.java index c4daa43..465f521 100644 --- a/core/src/test/java/com/github/dbunit/rules/ExportDataSetIt.java +++ b/core/src/test/java/com/github/dbunit/rules/exporter/ExportDataSetIt.java @@ -1,11 +1,18 @@ -package com.github.dbunit.rules; +package com.github.dbunit.rules.exporter; +import com.github.dbunit.rules.DBUnitRule; import com.github.dbunit.rules.api.dataset.DataSet; import com.github.dbunit.rules.api.dataset.DataSetFormat; +import com.github.dbunit.rules.api.expoter.DataSetExportConfig; import com.github.dbunit.rules.api.expoter.ExportDataSet; import com.github.dbunit.rules.configuration.DataSetConfig; import com.github.dbunit.rules.dataset.DataSetExecutorImpl; +import com.github.dbunit.rules.exporter.DataSetExporterImpl; +import com.github.dbunit.rules.model.User; import com.github.dbunit.rules.util.EntityManagerProvider; + +import org.dbunit.DatabaseUnitException; +import org.dbunit.database.DatabaseConnection; import org.junit.AfterClass; import org.junit.Rule; import org.junit.Test; @@ -13,9 +20,11 @@ import org.junit.runners.JUnit4; import java.io.File; +import java.sql.SQLException; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.contentOf; +import static com.github.dbunit.rules.util.EntityManagerProvider.*; /** * Created by pestano on 11/09/16. @@ -58,6 +67,25 @@ public void shouldExportAllTablesInYMLFormatWithoutDataSetAnnotation() { public void shouldExportAllTablesInXLSFormat() { } + @Test + @DataSet(cleanBefore=true) + public void shouldExportYMLDataSetWithoutAnnotations() throws SQLException, DatabaseUnitException{ + tx().begin(); + User u1 = new User(); + u1.setName("u1"); + em().persist(u1); + tx().commit(); + DataSetExporterImpl.getInstance().export(new DatabaseConnection(emProvider.connection()), new DataSetExportConfig().outputFileName("target/user.yml")); + File ymlDataSet = new File("target/user.yml"); + assertThat(ymlDataSet).exists(); + assertThat(contentOf(ymlDataSet)). + contains("USER:"+NEW_LINE + + " - ID: 1"+NEW_LINE + + " NAME: \"u1\""+NEW_LINE + ); + + } + @Test @DataSet("datasets/yml/users.yml") @ExportDataSet(format = DataSetFormat.CSV,outputName="target/exported/csv/allTables.csv") diff --git a/core/src/test/resources/META-INF/persistence.xml b/core/src/test/resources/META-INF/persistence.xml index b6d98f4..1e16663 100644 --- a/core/src/test/resources/META-INF/persistence.xml +++ b/core/src/test/resources/META-INF/persistence.xml @@ -13,8 +13,8 @@ - - + @@ -32,8 +32,8 @@ - - + @@ -51,8 +51,8 @@ - - + @@ -70,8 +70,8 @@ - - + @@ -89,8 +89,8 @@ - - + @@ -108,8 +108,8 @@ - - + diff --git a/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml b/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml index 1707cf2..efbf186 100644 --- a/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml +++ b/examples/jOOQ-DBUnit-flyway-example/src/main/resources/log4j.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml b/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml index 8e18350..fd8258a 100644 --- a/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml +++ b/examples/jpa-productivity-boosters/src/test/resources/META-INF/persistence.xml @@ -15,7 +15,7 @@ - + diff --git a/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java b/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java index db41694..aff27fc 100644 --- a/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java +++ b/junit5/src/main/java/com/github/dbunit/rules/junit5/DBUnitExtension.java @@ -111,8 +111,9 @@ public void exportDataSet(DataSetExecutor dataSetExecutor, Method method) { if(outputName == null || "".equals(outputName.trim())){ outputName = method.getName().toLowerCase()+"."+exportConfig.getDataSetFormat().name().toLowerCase(); } + exportConfig.outputFileName(outputName); try { - DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig ,outputName); + DataSetExporterImpl.getInstance().export(dataSetExecutor.getDBUnitConnection(),exportConfig); } catch (Exception e) { java.util.logging.Logger.getLogger(getClass().getName()).log(Level.WARNING,"Could not export dataset after method "+method.getName(),e); } diff --git a/junit5/src/test/resources/META-INF/persistence.xml b/junit5/src/test/resources/META-INF/persistence.xml index c3c4f89..d998786 100644 --- a/junit5/src/test/resources/META-INF/persistence.xml +++ b/junit5/src/test/resources/META-INF/persistence.xml @@ -14,7 +14,7 @@ - +