blob: 266ad11e681a8b3250d0f92882a54f3523ee5fa8 [file] [log] [blame]
/*
* Copyright (c) 2013, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation
package org.eclipse.persistence.testing.tests.jpa.inheritance;
import java.util.HashMap;
import java.util.Map;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.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.
*/
@Override
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 (factory != null) {
factory.close();
factory = null;
}
}
/**
* Use a custom factory to generate DDL.
*/
@Override
public EntityManagerFactory getEntityManagerFactory() {
if (factory == null) {
// Only test DDL on Oracle, otherwise will have constraint issues.
if (!getServerSession().getPlatform().isOracle()) {
factory = Persistence.createEntityManagerFactory(getPersistenceUnitName());
return 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");
factory = Persistence.createEntityManagerFactory(getPersistenceUnitName(), properties);
}
return factory;
}
/**
* Use a custom factory to generate DDL.
*/
@Override
public EntityManager createEntityManager() {
return getEntityManagerFactory().createEntityManager();
}
}