package org.castor.cpa.test.test2550;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.castor.cpa.test.framework.CPATestCase;
import org.castor.cpa.test.framework.xml.types.DatabaseEngineType;
import java.sql.Connection;
import java.sql.SQLException;
import org.exolab.castor.jdo.Database;
import org.exolab.castor.jdo.JDOManager;
import org.exolab.castor.jdo.PersistenceException;
public final class TestCreate extends CPATestCase {
private static final String DBNAME = "test2550";
private static final String MAPPING = "/org/castor/cpa/test/test2550/mapping.xml";
public static Test suite() throws Exception {
TestSuite suite = new TestSuite(TestCreate.class.getName());
suite.addTest(new TestCreate("delete"));
suite.addTest(new TestCreate("createValid"));
suite.addTest(new TestCreate("createNullConstraint"));
return suite;
}
public TestCreate(final String name) {
super(name);
}
// Test are only included/excluded for engines that have been tested with this test suite.
public boolean include(final DatabaseEngineType engine) {
return (engine == DatabaseEngineType.ORACLE);
}
// Test uses returning sequence key generator.
// derby, mysql and mssql do not support sequence.
// postgresql do not support returning sequence.
public boolean exclude(final DatabaseEngineType engine) {
return (engine == DatabaseEngineType.DERBY)
|| (engine == DatabaseEngineType.HSQL)
|| (engine == DatabaseEngineType.MYSQL)
|| (engine == DatabaseEngineType.POSTGRESQL)
|| (engine == DatabaseEngineType.SQL_SERVER);
}
public void delete() throws Exception {
JDOManager jdo = getJDOManager(DBNAME, MAPPING);
// Delete all records to avoid problems with previous runs
Connection conn = jdo.getConnectionFactory().createConnection();
conn.setAutoCommit(true);
conn.createStatement().execute("DELETE FROM TEST2550_ENTITY");
conn.close();
}
public void createValid() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
db.begin();
Entity entity = new Entity(null, Entity.DEFAULT_NAME);
db.create(entity);
db.commit();
db.close();
}
public void createNullConstraint() throws Exception {
Database db = getJDOManager(DBNAME, MAPPING).getDatabase();
db.begin();
Entity entity = new Entity(null, null);
try {
db.create(entity);
fail("Expected SQLException");
} catch (PersistenceException ex) {
assertTrue(ex.getCause() instanceof SQLException);
}
db.commit();
db.close();
}
}