X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=test%2Fenterprise%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsupport%2Fpersistence%2FDatabaseUtilsTestBase.java;fp=test%2Fenterprise%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsupport%2Fpersistence%2FDatabaseUtilsTestBase.java;h=e55f13413e8e84161c3d13b6c6f6b6409d1aa53c;hb=2207a1e695ce23e79678c232cff2ceb84ebaa801;hp=0000000000000000000000000000000000000000;hpb=4985b85f86028eb896ac853134cb66a1299815a5;p=utils diff --git a/test/enterprise/src/test/java/org/wamblee/support/persistence/DatabaseUtilsTestBase.java b/test/enterprise/src/test/java/org/wamblee/support/persistence/DatabaseUtilsTestBase.java new file mode 100644 index 00000000..e55f1341 --- /dev/null +++ b/test/enterprise/src/test/java/org/wamblee/support/persistence/DatabaseUtilsTestBase.java @@ -0,0 +1,89 @@ +package org.wamblee.support.persistence; + +import static junit.framework.Assert.assertEquals; + +import javax.persistence.EntityManager; +import javax.sql.DataSource; + +import org.dbunit.IDatabaseTester; +import org.dbunit.dataset.ITable; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.wamblee.support.persistence.Database; +import org.wamblee.support.persistence.DatabaseBuilder; +import org.wamblee.support.persistence.DatabaseUtils; +import org.wamblee.support.persistence.JpaBuilder; +import org.wamblee.support.persistence.PersistenceUnitDescription; +import org.wamblee.support.persistence.JpaBuilder.JpaUnitOfWork; + +public class DatabaseUtilsTestBase { + private Database db; + private DataSource dataSource; + private PersistenceUnitDescription persistenceUnit; + private JpaBuilder builder; + private DatabaseUtils dbutils; + private IDatabaseTester dbtester; + + @Before + public void setUp() throws Exception { + db = DatabaseBuilder.getDatabase(); + dataSource = db.start(); + + persistenceUnit = new MyPersistenceUnit(); + + dbutils = new DatabaseUtils(dataSource, persistenceUnit.getTables()); + dbutils.dropTables(); + dbutils.dropTables(JpaCustomizerBuilder.getCustomizer().getJpaTables()); + + builder = new JpaBuilder(dataSource, persistenceUnit); + builder.start(); + + dbtester = dbutils.createDbTester(); + } + + @After + public void tearDown() { + builder.stop(); + db.stop(); + } + + @Test + public void testTablesCorrect() throws Exception { + String[] tables = dbutils.getTableNames(); + assertEquals(1, tables.length); + assertEquals("XYZ_MYENTITY", tables[0]); + } + + @Test + public void testDeleteTables() throws Exception { + String[] tables = dbutils.getTableNames(); + assertEquals(1, tables.length); + assertEquals("XYZ_MYENTITY", tables[0]); + + // Put some data in the database. + builder.execute(new JpaUnitOfWork() { + public Void execute(EntityManager em) { + MyEntity entity = new MyEntity("a", "b"); + em.persist(entity); + return null; + } + }); + + // Verify one row is written (using Db unit) + ITable table = dbtester.getDataSet().getTable("XYZ_MYENTITY"); + assertEquals(1, table.getRowCount()); + + // Clean the database + dbutils.cleanDatabase(); + table = dbtester.getDataSet().getTable("XYZ_MYENTITY"); + assertEquals(0, table.getRowCount()); + + // Now drop the database + dbutils.dropTables(); + dbutils.dropTables(JpaCustomizerBuilder.getCustomizer().getJpaTables()); + tables = dbutils.getTableNames(); + assertEquals(0, tables.length); + } + +}