/* * Copyright 2014 willemijnwouters. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.unitils.dbunit; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import javax.sql.DataSource; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.unitils.UnitilsJUnit4TestClassRunner; import org.unitils.core.Unitils; import org.unitils.database.DatabaseModule; import org.unitils.database.annotations.TestDataSource; import org.unitils.database.sqlassert.SqlAssert; import org.unitils.dbunit.annotation.DataSet; import org.unitils.dbunit.annotation.DataSets; /** * * @author willemijnwouters */ @RunWith(UnitilsJUnit4TestClassRunner.class) public class EmptyTablesTest2 { @TestDataSource("database1") private DataSource dataSource; @BeforeClass public static void beforeClass() throws FileNotFoundException, IOException { Properties config = getCorrectProperties(); DatabaseModule databaseModule = Unitils.getInstance().getModulesRepository().getModuleOfType(DatabaseModule.class); databaseModule.init(config); databaseModule.afterInit(); DbUnitModule dbunitModule = Unitils.getInstance().getModulesRepository().getModuleOfType(DbUnitModule.class); dbunitModule.init(config); dbunitModule.afterInit(); } @Test @DataSet("DbunitDifferentColumnsTest-FirstContainsMoreAttributes.xml") public void testFirstContainsMoreAttributes() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 2l); SqlAssert.assertMultipleRowSqlResult("select * from person", dataSource, new String[]{"2", "Myrthe"}, new String[]{"1", null}); } @Test @DataSet("DbunitDifferentColumnsTest-FirstContainsLessAttributes.xml") public void testFirstContainsLessAttributes() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 2l); SqlAssert.assertSingleRowSqlResult("select personname from person where personid='1'", dataSource, new String[]{"Willemijn"}); //SqlAssert.assertMultipleRowSqlResult("select * from person", new String[]{"2"}, new String[]{"1", "Willemijn"}); } @Test @DataSet("DbunitDifferentColumnsTest-FirstContainsSameAttributes.xml") public void testFirstContainsSameAttributes() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 2l); SqlAssert.assertMultipleRowSqlResult("select * from person", dataSource, new String[]{"3", "Maurits"}, new String[]{"4", "Franciscus"}); } @Test @DataSet("DbunitDifferentColumnsTest-FirstContainsNoAttributes.xml") public void testFirstContainsNoAttributes() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 0L); } @Test @DataSet({"DbunitDifferentCollumnsTest-WithAllColumns.xml", "DbunitDifferentCollumnsTest-WithOnlyOneColumn.xml"}) public void testFirstDataSetContainsMoreAttributes() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 4L); String[][] expected = new String[][]{ new String[]{"12", "Peter"}, new String[]{"13", "Stijn"}, new String[]{"14", null}, new String[]{"15", null} }; SqlAssert.assertMultipleRowSqlResult("select * from person", expected); } @Test @DataSet({"DbunitDifferentCollumnsTest-WithOnlyOneColumn.xml", "DbunitDifferentCollumnsTest-WithAllColumns.xml"}) public void testFirstDataSetContainsLessAttributes() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 4L); String[][] expected = new String[][]{ new String[]{"12", "Peter"}, new String[]{"13", "Stijn"}, new String[]{"14", null}, new String[]{"15", null} }; SqlAssert.assertMultipleRowSqlResult("select * from person", expected); } @Test @DataSet({"DbunitDifferentCollumnsTest-WithOnlyOneColumn.xml", "DbunitDifferentCollumnsTest-WithOnlyPersonName.xml"}) public void testFirstDataSetContainsDifferentColumnsThanSecond() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 4L); String[][] expected = new String[][]{ new String[]{null, "Suzan"}, new String[]{null, "Mathias"}, new String[]{"14", null}, new String[]{"15", null} }; SqlAssert.assertMultipleRowSqlResult("select * from person", expected); } @Test @DataSets({ @DataSet("DbunitDifferentCollumnsTest-WithOnlyOneColumn.xml"), @DataSet("DbunitDifferentCollumnsTest-WithOnlyPersonName.xml") }) public void testFirstDataSetContainsDifferentColumnsThanSecondWithDataSetsAnnotation() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 4L); String[][] expected = new String[][]{ new String[]{null, "Suzan"}, new String[]{null, "Mathias"}, new String[]{"14", null}, new String[]{"15", null} }; SqlAssert.assertMultipleRowSqlResult("select * from person", expected); } @Test @DataSets({ @DataSet("DbunitDifferentCollumnsTest-WithOnlyOneColumn.xml"), @DataSet("DbunitDifferentCollumnsTest-WithAllColumns.xml") }) public void testFirstDataSetContainsLessAttributesWithDataSetsAnnotation() { SqlAssert.assertCountSqlResult("select count(*) from person", dataSource, 4L); String[][] expected = new String[][]{ new String[]{"12", "Peter"}, new String[]{"13", "Stijn"}, new String[]{"14", null}, new String[]{"15", null} }; SqlAssert.assertMultipleRowSqlResult("select * from person", expected); } private static Properties getCorrectProperties() { Properties config = (Properties) Unitils.getInstance().getConfiguration().clone(); config.setProperty("database.names", "database1, database2"); config.setProperty("database.userName", "sa"); config.setProperty("database.password", ""); config.setProperty("database.schemaNames", "public"); config.setProperty("database.driverClassName.database1", "org.hsqldb.jdbcDriver"); config.setProperty("database.driverClassName.database2", "org.h2.Driver"); config.setProperty("database.url.database1", "jdbc:hsqldb:mem:unitils1"); config.setProperty("database.url.database2", "jdbc:h2:~/test"); config.setProperty("database.dialect.database1", "hsqldb"); config.setProperty("database.dialect.database2", "h2"); config.setProperty("database.dbMaintain.enabled", "true"); config.setProperty("dbMaintainer.autoCreateExecutedScriptsTable", "true"); config.setProperty("dbMaintainer.autoCreateDbMaintainScriptsTable", "false"); config.setProperty("updateDataBaseSchema.enabled", "true"); config.setProperty("dbMaintainer.updateSequences.enabled", "true"); config.setProperty("dbMaintainer.keepRetryingAfterError.enabled","true"); config.setProperty("org.unitils.dbmaintainer.script.ScriptSource.implClassName", "org.unitils.dbmaintainer.script.impl.DefaultScriptSource"); config.setProperty("unitils.module.hibernate.enabled", "false"); config.setProperty("unitils.module.jpa.enabled", "false"); config.setProperty("unitils.module.spring.enabled", "false"); config.setProperty("dbMaintainer.script.locations", "src/test/resources/dbscripts"); config.setProperty("dbMaintainer.fromScratch.enabled", "false"); return config; } }