/******************************************************************************* * Copyright (c) 1998, 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 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; } }