Package ch.inftec.ju.testing.db

Source Code of ch.inftec.ju.testing.db.DbDataUtilTest

package ch.inftec.ju.testing.db;

import java.net.URL;
import java.sql.Connection;
import java.sql.SQLException;

import junit.framework.ComparisonFailure;

import org.hibernate.jdbc.Work;
import org.junit.Assert;
import org.junit.Test;
import org.w3c.dom.Document;

import ch.inftec.ju.db.JuEmUtil.DbType;
import ch.inftec.ju.testing.db.data.entity.TestingEntity;
import ch.inftec.ju.util.JuUrl;
import ch.inftec.ju.util.xml.XPathGetter;
import ch.inftec.ju.util.xml.XmlUtils;

public class DbDataUtilTest extends AbstractDbTest {
  @Test
  public void canImportData_fromDatasetFile() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    DbDataUtil du = new DbDataUtil(this.em);
    du.cleanImport("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity.xml");
    TestingEntity te = this.em.find(TestingEntity.class, 1L);
    Assert.assertEquals("DbDataUtilTest", te.getName());
  }
 
  @Test
  public void canExportData_toXmlDocument() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    TestingEntity te = new TestingEntity();
    te.setName("Export Test");
    this.em.persist(te);
   
    DbDataUtil du = new DbDataUtil(this.em);
    Document doc = du.buildExport().addTable("TestingEntity").writeToXmlDocument();
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(1, xg.getArray("//TestingEntity").length);
    Assert.assertEquals("Export Test", xg.getSingle("//TestingEntity/@name"));
  }
 
  @Test
  public void xmlExport_copesWithCamelCaseTable_andUsesUpperCaseColumnNames() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    TestingEntity te = new TestingEntity();
    te.setName("Export Test");
    this.em.persist(te);
   
    // Export table with camel case
    DbDataUtil du = new DbDataUtil(this.em);
    Document doc = du.buildExport().addTable("TestingEntity").writeToXmlDocument();
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(1, xg.getArray("//TestingEntity").length);
    Assert.assertEquals("Export Test", xg.getSingle("//TestingEntity/@name"));
  }
 
  @Test
  public void xmlExport_copesWithLowerCaseTable_andUsesUpperCaseColumnNames() {
    // MySQL is case sensitive
    JuAssumeUtils.dbIsNot(this.emUtil, DbType.MYSQL);
       
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    TestingEntity te = new TestingEntity();
    te.setName("Export Test");
    this.em.persist(te);
   
    // Export table with camel case
    DbDataUtil du = new DbDataUtil(this.em);
    Document doc = du.buildExport().addTable("testingentity").writeToXmlDocument();
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(1, xg.getArray("//testingentity").length);
    Assert.assertEquals("Export Test", xg.getSingle("//testingentity/@name"));
  }
 
  @Test
  public void xmlExport_copesWithUpperCaseTable_andUsesUpperCaseColumnNames() {
    // MySQL is case sensitive
    JuAssumeUtils.dbIsNot(this.emUtil, DbType.MYSQL);
   
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    TestingEntity te = new TestingEntity();
    te.setName("Export Test");
    this.em.persist(te);
   
    // Export table with camel case
    DbDataUtil du = new DbDataUtil(this.em);
    Document doc = du.buildExport().addTable("TESTINGENTITY").writeToXmlDocument();
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(1, xg.getArray("//TESTINGENTITY").length);
    Assert.assertEquals("Export Test", xg.getSingle("//TESTINGENTITY/@name"));
  }
 
  @Test
  public void xmlExport_canApply_casedTableNames() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    TestingEntity te = new TestingEntity();
    te.setName("Export Test");
    this.em.persist(te);
   
    // Export table with camel case
    DbDataUtil du = new DbDataUtil(this.em);
    Document doc = du.buildExport()
      .addTable("TESTINGENTITY")
      .setTableNamesCasingByDataSet("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity.xml")
      .writeToXmlDocument();
   
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(1, xg.getArray("//TestingEntity").length);
    Assert.assertEquals("Export Test", xg.getSingle("//TestingEntity/@name"));
  }
 
  @Test
  public void canExportTables_basedOnDatasetXml() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    TestingEntity te = new TestingEntity();
    te.setName("Export Test");
    this.em.persist(te);
   
    // Export table with camel case
    DbDataUtil du = new DbDataUtil(this.em);
    Document doc = du.buildExport()
      .addTablesByDataSet(JuUrl.resource("ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity.xml"), false)
      .writeToXmlDocument();
   
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(1, xg.getArray("//TestingEntity").length);
    Assert.assertEquals("Export Test", xg.getSingle("//TestingEntity/@name"));
  }
 
  @Test
  public void exportTables_areSortedByPrimaryKey() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    DbDataUtil du = new DbDataUtil(this.em);
    du.cleanImport("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity_unsorted.xml");
   
    // Export table with camel case
    Document doc = du.buildExport()
      .addTableSorted("TestingEntity")
      .writeToXmlDocument();
   
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(3, xg.getArray("//TestingEntity").length);
    Assert.assertEquals("1", xg.getSingle("//TestingEntity[1]/@id"));
    Assert.assertEquals("2", xg.getSingle("//TestingEntity[2]/@id"));
    Assert.assertEquals("3", xg.getSingle("//TestingEntity[3]/@id"));
  }
 
  @Test
  public void exportTables_basedOnDatasetXml_areSortedByPrimaryKey() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    DbDataUtil du = new DbDataUtil(this.em);
    du.cleanImport("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity_unsorted.xml");
   
    // Export table with camel case
    Document doc = du.buildExport()
      .addTablesByDataSet(JuUrl.resource("ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity.xml"), true)
      .writeToXmlDocument();
   
    XPathGetter xg = new XPathGetter(doc);
    logger.debug("Exported XML\n" + XmlUtils.toString(doc, false, true));
   
    Assert.assertEquals(3, xg.getArray("//TestingEntity").length);
    Assert.assertEquals("1", xg.getSingle("//TestingEntity[1]/@id"));
    Assert.assertEquals("2", xg.getSingle("//TestingEntity[2]/@id"));
    Assert.assertEquals("3", xg.getSingle("//TestingEntity[3]/@id"));
  }
 
  @Test
  public void assert_canAssertTables() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    DbDataUtil du = new DbDataUtil(this.emUtil);
    du.cleanImport("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity_unsorted.xml");
   
    du.buildAssert()
      .expected("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity_sorted.xml")
      .assertEquals();
  }
 
  @Test(expected=ComparisonFailure.class)
  public void assert_canAssertTables_failsOnWrongData() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    DbDataUtil du = new DbDataUtil(this.emUtil);
    du.cleanImport("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity_unsorted.xml");
   
    du.buildAssert()
      .expected("/ch/inftec/ju/testing/db/DbDataUtilTest_testingEntity.xml")
      .assertEquals();
  }
 
  @Test
  public void canImport_usingJdbcConnection() {
    DbSchemaUtil ds = new DbSchemaUtil(this.em);
    ds.prepareDefaultTestData(true, true, true);
   
    this.emUtil.doWork(new Work() {
      @Override
      public void execute(Connection connection) throws SQLException {
        URL url = JuUrl.resource("ch/inftec/ju/testing/db/DbDataUtilTest_jdbcConnectionImport.xml");
        DbDataUtil.executeInsert(connection, url, true);
      }
    });
   
    TestingEntity te = this.em.find(TestingEntity.class, 1L);
    Assert.assertEquals("DbDataUtilTest.jdbcConnection", te.getName());
  }
}
TOP

Related Classes of ch.inftec.ju.testing.db.DbDataUtilTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.