package org.compass.annotations.test.poly.operations; import org.compass.annotations.test.AbstractAnnotationsTestCase; import org.compass.core.CompassSession; import org.compass.core.CompassTransaction; import org.compass.core.config.CompassConfiguration; /** * @author kimchy */ public class PolyOperationsTests extends AbstractAnnotationsTestCase { protected void addExtraConf(CompassConfiguration conf) { conf.addClass(Contract.class).addClass(A.class).addClass(B.class); } public void testGetPolyOperations() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); A a = new A(); a.id = 1; session.save(a); B b = new B(); b.id = 2; session.save(b); a = session.get(A.class, 1); assertNotNull(a); a = session.get(B.class, 1); assertNull(a); a = session.get(B.class, 2); assertNotNull(a); a = session.get(A.class, 2); assertNotNull(a); Contract c = session.get(Contract.class, 2); assertNotNull(c); c = session.get(Contract.class, 1); assertNotNull(c); tr.commit(); session.close(); } public void testDeletePolyOperations() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); A a = new A(); a.id = 1; session.save(a); B b = new B(); b.id = 2; session.save(b); a = new A(); a.id = 3; session.save(a); a = session.get(A.class, 1); assertNotNull(a); a = session.get(B.class, 2); assertNotNull(a); a = session.get(A.class, 3); assertNotNull(a); session.delete(A.class, 2); a = session.get(B.class, 2); assertNull(a); session.delete(Contract.class, 1); a = session.get(A.class, 1); assertNull(a); tr.commit(); session.close(); } public void testPolyFind() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); A a = new A(); a.id = 1; a.value = "value1"; session.save(a); B b = new B(); b.id = 2; b.value = "value2"; session.save(b); a = new A(); a.id = 3; a.value = "value3"; session.save(a); // search exact ones assertEquals(1, session.find("A.value:value1").length()); assertEquals(1, session.find("B.value:value2").length()); // search poly ones based on A assertEquals(1, session.find("A.value:value2").length()); // search poly ones based on the Contract assertEquals(1, session.find("Contract.value:value1").length()); assertEquals(1, session.find("Contract.value:value2").length()); assertEquals(1, session.find("Contract.value:value3").length()); tr.commit(); session.close(); } }