blob: e6664837ab8750e113e1c0f248d3f6067db80be4 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 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 from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.testing.tests.interfaces;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.tools.schemaframework.*;
import org.eclipse.persistence.expressions.*;
import org.eclipse.persistence.queries.*;
import org.eclipse.persistence.testing.models.interfaces.*;
/**
* This model tests interface support, where the interfaces do not have tables in the database.
*/
public class InterfaceWithoutTablesTestModel extends TestModel {
public InterfaceWithoutTablesTestModel() {
setDescription("This model tests interface support, where the interfaces have tables in the database");
}
public void addRequiredSystems() {
addRequiredSystem(new InterfaceWithoutTablesSystem());
}
public void addTests() {
addTest(getReadObjectTestSuite());
addTest(getReadAllTestSuite());
addTest(getDeleteObjectTestSuite());
addTest(getInsertObjectTestSuite());
addTest(getUpdateObjectTestSuite());
addTest(getVariable1To1TestSuite());
addTest(getManyDescriptorTestSuite());
}
public static TestSuite getDeleteObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("InterfaceWithoutTablesDeleteObjectTestSuite");
suite.setDescription("This suite tests the deletion of each object in the interface model (without tables).");
PopulationManager manager = PopulationManager.getDefaultManager();
suite.addTest(new DeleteObjectTest(manager.getObject(Film.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(Documentary.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(Secretary.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(Receptionist.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(ProductDeveloper.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(CourseDeveloper.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(ProductManager.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(PersonnelManager.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(Employee.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(Phone.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(Email.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(Company.class, "example1")));
return suite;
}
public static TestSuite getInsertObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("InserfaceWithoutTablesInsertObjectTestSuite");
suite.setDescription("This suite tests the insertion of each object in the interface model (without tables).");
suite.addTest(new InsertObjectTest(Film.example2()));
suite.addTest(new InsertObjectTest(Secretary.example2()));
suite.addTest(new InsertObjectTest(Company.example3()));
suite.addTest(new InsertObjectTest(CourseDeveloper.example1()));
suite.addTest(new InsertObjectTest(Email.example2()));
//suite.addTest(new InsertObjectTest(Employee.example3())); Cannot use insert test on emp as bi-1-1
suite.addTest(new InsertObjectTest(PersonnelManager.example1()));
suite.addTest(new InsertObjectTest(Phone.example1()));
suite.addTest(new InsertObjectTest(ProductDeveloper.example3()));
suite.addTest(new InsertObjectTest(ProductManager.example1()));
suite.addTest(new InsertObjectTest(Receptionist.example1()));
return suite;
}
public static TestSuite getManyDescriptorTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("InterfaceWithoutTablesManyDescriptorTestSuite");
suite.setDescription("This suite tests the support of many descriptors. (without tables).");
suite.addTest(new DescriptorInitTest());
return suite;
}
public static TestSuite getReadAllTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("InterfaceWithoutTablesReadAllTestSuite");
suite.setDescription("This suite tests the reading of all the objects of each class in the interface model (without tables).");
ReadAllQuery query = new ReadAllQuery();
query.setReferenceClass(Unionized.class);
query.useCollectionClass(java.util.ArrayList.class);
ReadAllTest aTest = new ReadAllTest(Unionized.class, 6);
aTest.setQuery(query);
suite.addTest(aTest);
suite.addTest(new ReadAllTest(Actor.class, 4));
suite.addTest(new ReadAllTest(Documentary.class, 1));
suite.addTest(new ReadAllTest(Film.class, 3));
suite.addTest(new ReadAllTest(Job.class, 18));
suite.addTest(new ReadAllTest(ManagerialJob.class, 6));
suite.addTest(new ReadAllTest(VIP.class, 3));
// Used to test Cursored Streams
ReadAllTest test = new ReadAllTest(VIP.class, 3);
test.setQuery(new ReadAllQuery());
test.getQuery().setReferenceClass(VIP.class);
test.getQuery().useCursoredStream();
suite.addTest(test);
// Test the non-availability of batch reading
test = new ReadAllBatchTest(Employee.class, 3);
test.setName("Batch Read Test");
test.setQuery(new ReadAllQuery());
test.getQuery().setReferenceClass(Employee.class);
test.getQuery().addBatchReadAttribute("contact");
suite.addTest(test);
suite.addTest(new OneToManyVariableBackBatchReadingTest());
// Test cascading
test = new ReadAllTest(Employee.class, 4);
test.setQuery(new ReadAllQuery());
test.getQuery().setReferenceClass(Employee.class);
test.getQuery().cascadeAllParts();
suite.addTest(test);
suite.addTest(new ReadAllTest(Employee.class, 4));
suite.addTest(new ReadAllConformInUowTest());
return suite;
}
public static ReadObjectTest getReadInterfaceObjectTest() {
TestSuite suite = new TestSuite();
PopulationManager manager = PopulationManager.getDefaultManager();
Contact contact = ((Employee)manager.getObject(Employee.class, "example1")).getContact();
ExpressionBuilder builder = new ExpressionBuilder();
Expression expression = builder.get("id").equal(contact.getEmp().getId());
ReadObjectQuery query = new ReadObjectQuery();
query.setReferenceClass(ContactHolder.class);
query.setSelectionCriteria(expression);
ReadObjectTest test = new ReadObjectTest(contact.getEmp());
test.setQuery(query);
return test;
}
public static TestSuite getReadObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("InterfaceWithoutTablesReadObjectTestSuite");
suite.setDescription("This suite test the reading of each object in the interface model (without tables).");
PopulationManager manager = PopulationManager.getDefaultManager();
suite.addTest(new ReadObjectTest(manager.getObject(Actor.class, "example4")));
suite.addTest(new ReadObjectTest(manager.getObject(Documentary.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(Film.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(Employee.class, "example2")));
suite.addTest(new ReadObjectTest(manager.getObject(CourseDeveloper.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(Email.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(PersonnelManager.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(Phone.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(ProductDeveloper.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(ProductManager.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(Receptionist.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(Secretary.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(Employee.class, "example4")));
suite.addTest(new ReadObjectTest(manager.getObject(Employee.class, "example1")));
suite.addTest(getReadInterfaceObjectTest());
return suite;
}
public static TestSuite getUpdateObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("InterfaceWithoutTablesUpdateObjectTestSuite");
suite.setDescription("This suite tests the updating of each object in the interface model (without tables).");
PopulationManager manager = PopulationManager.getDefaultManager();
suite.addTest(new WriteObjectTest(manager.getObject(Employee.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Employee.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(CourseDeveloper.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(CourseDeveloper.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(Email.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Email.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(PersonnelManager.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(PersonnelManager.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(Phone.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Phone.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(ProductDeveloper.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(ProductDeveloper.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(ProductManager.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(ProductManager.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(Receptionist.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Receptionist.class, "example1")));
suite.addTest(new WriteObjectTest(manager.getObject(Secretary.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Secretary.class, "example1")));
suite.addTest(new UpdateObjectTest());
suite.addTest(new VariableOneToOneNonPrivatelyOwnedTest());
return suite;
}
public static QueryAcrossV11Test getV11QueryTest() {
return new QueryAcrossV11Test();
}
public static TestSuite getVariable1To1TestSuite() {
TestSuite suite = new TestSuite();
suite.setName("InterfaceWithoutTablesVariable1To1TestSuite");
suite.setDescription("This suite tests certain aspects of the Variable 1 to 1 implementation using the interface model (without tables).");
suite.addTest(new VariableOneToOneDeepMergeCloneTest());
suite.addTest(new VariableOneToOneShallowWriteTest());
suite.addTest(getV11QueryTest());
suite.addTest(new QueryAccrossV11ProxyIndirectionTest());
suite.addTest(new PostCommitEventPrimaryKeyTest());
suite.addTest(new VariableOneToOneUpdateTest());
suite.addTest(new VariableOneToOneDeleteTest());
suite.addTest(new VariableOneToOneCodeCoverageTest());
suite.addTest(new VariableOneToOneInsertTest());
suite.addTest(new VariableOneToOneGetTypeFieldTest());
return suite;
}
}