/*******************************************************************************
* Copyright (c) 2013, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.persistence.testing.tests.jpa.inheritance;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.persistence.config.PersistenceUnitProperties;
public class TablePerClassInheritanceDDLTest extends TablePerClassInheritanceJUnitTest {
static EntityManagerFactory factory;
public TablePerClassInheritanceDDLTest() {
super();
}
public TablePerClassInheritanceDDLTest(String name) {
super(name);
}
public static Test suite() {
TestSuite suite = new TestSuite();
suite.setName("TablePerClassInheritanceDDLTest");
suite.addTest(new TablePerClassInheritanceDDLTest("testSetup"));
suite.addTest(new TablePerClassInheritanceDDLTest("testCreateAssassinWithGun"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateAssassinWithGun"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateGunToAssassin"));
suite.addTest(new TablePerClassInheritanceDDLTest("testAddDirectElimination"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateDirectElimination"));
suite.addTest(new TablePerClassInheritanceDDLTest("testAddIndirectElimination"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateIndirectElimination"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateAssassinWithBombAndEliminations"));
suite.addTest(new TablePerClassInheritanceDDLTest("testNamedQueryFindAllWeapons"));
suite.addTest(new TablePerClassInheritanceDDLTest("testNamedQueryFindAllWeaponsWhereDescriptionContainsSniper"));
suite.addTest(new TablePerClassInheritanceDDLTest("testBatchFindAllWeapons"));
suite.addTest(new TablePerClassInheritanceDDLTest("testCreateNewSocialClubsWithMembers"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateSocialClub1Members"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateSocialClub2Members"));
suite.addTest(new TablePerClassInheritanceDDLTest("testValidateSocialClub3Members"));
suite.addTest(new TablePerClassInheritanceDDLTest("testAssassinOptimisticLocking"));
suite.addTest(new TablePerClassInheritanceDDLTest("testSpecialAssassinOptimisticLocking"));
suite.addTest(new TablePerClassInheritanceDDLTest("testAssassinOptimisticLockingUsingEntityManagerAPI"));
suite.addTest(new TablePerClassInheritanceDDLTest("testGunOptimisticLocking"));
suite.addTest(new TablePerClassInheritanceDDLTest("testUpdateAllQuery"));
suite.addTest(new TablePerClassInheritanceDDLTest("testTeardown"));
return suite;
}
/**
* DDL should be generated when creating factory.
*/
public void testSetup() {
clearCache();
clearServerSessionCache();
createEntityManager().close();
// Only test DDL on Oracle.
if (!getServerSession().getPlatform().isOracle()) {
super.testSetup();
}
}
/**
* DDL should be generated when creating factory.
*/
public void testTeardown() {
if (this.factory != null) {
this.factory.close();
this.factory = null;
}
}
/**
* Use a custom factory to generate DDL.
*/
public EntityManagerFactory getEntityManagerFactory() {
if (this.factory == null) {
// Only test DDL on Oracle, otherwise will have constraint issues.
if (!getServerSession().getPlatform().isOracle()) {
this.factory = Persistence.createEntityManagerFactory(getPersistenceUnitName());
return this.factory;
}
// Ensure real one inits first.
super.createEntityManager().close();
Map properties = new HashMap(getPersistenceProperties());
properties.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.DROP_AND_CREATE);
properties.put(PersistenceUnitProperties.DDL_GENERATION_MODE, PersistenceUnitProperties.DDL_DATABASE_GENERATION);
properties.put(PersistenceUnitProperties.SESSION_NAME, "TablePerClassInheritanceDDLTest");
this.factory = Persistence.createEntityManagerFactory(getPersistenceUnitName(), properties);
}
return this.factory;
}
/**
* Use a custom factory to generate DDL.
*/
public EntityManager createEntityManager() {
return getEntityManagerFactory().createEntityManager();
}
}