You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/11/26 05:10:29 UTC
svn commit: r479269 -
/incubator/cayenne/main/trunk/integration-test/pojo/src/test/java/org/apache/cayenne/itest/pojo/ManyToOneObjectTest.java
Author: aadamchik
Date: Sat Nov 25 20:10:29 2006
New Revision: 479269
URL: http://svn.apache.org/viewvc?view=rev&rev=479269
Log:
CAY-682:Generic Cayenne POJO enhancer
(added tests for to-one prefetching)
Modified:
incubator/cayenne/main/trunk/integration-test/pojo/src/test/java/org/apache/cayenne/itest/pojo/ManyToOneObjectTest.java
Modified: incubator/cayenne/main/trunk/integration-test/pojo/src/test/java/org/apache/cayenne/itest/pojo/ManyToOneObjectTest.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/integration-test/pojo/src/test/java/org/apache/cayenne/itest/pojo/ManyToOneObjectTest.java?view=diff&rev=479269&r1=479268&r2=479269
==============================================================================
--- incubator/cayenne/main/trunk/integration-test/pojo/src/test/java/org/apache/cayenne/itest/pojo/ManyToOneObjectTest.java (original)
+++ incubator/cayenne/main/trunk/integration-test/pojo/src/test/java/org/apache/cayenne/itest/pojo/ManyToOneObjectTest.java Sat Nov 25 20:10:29 2006
@@ -21,6 +21,8 @@
import java.lang.reflect.Field;
import java.util.List;
+import org.apache.cayenne.DataObjectUtils;
+import org.apache.cayenne.Persistent;
import org.apache.cayenne.query.SelectQuery;
public class ManyToOneObjectTest extends PojoContextCase {
@@ -53,5 +55,47 @@
assertNotNull(or);
assertEquals(Boolean.TRUE, f.get(o1));
+ }
+
+ public void testSelectToOneWithPrefetch() throws Exception {
+ getDbHelper().deleteAll("many_to_one_entity1");
+ getDbHelper().deleteAll("one_to_many_entity1");
+ getDbHelper().insert("one_to_many_entity1", new String[] {
+ "id"
+ }, new Object[] {
+ 5
+ });
+
+ getDbHelper().insert("many_to_one_entity1", new String[] {
+ "id", "one_to_many_entity1_id"
+ }, new Object[] {
+ 16, 5
+ });
+
+ SelectQuery q = new SelectQuery(ManyToOneEntity1.class);
+ q.addPrefetch("toOne");
+ List results = context.performQuery(q);
+ assertEquals(1, results.size());
+
+ ManyToOneEntity1 o1 = (ManyToOneEntity1) results.get(0);
+
+ // at this point the relationship is still fault, but it must resolve from cache
+ // without going to db
+ OneToManyEntity1 or;
+
+ blockDomainQueries();
+ try {
+ or = o1.getToOne();
+ assertNotNull(or);
+
+ Field f = ManyToOneEntity1.class.getDeclaredField("$cay_faultResolved_toOne");
+ assertEquals(Boolean.TRUE, f.get(o1));
+ assertEquals(5, DataObjectUtils.intPKForObject((Persistent) or));
+ }
+ finally {
+ unblockDomainQueries();
+ }
+
+ assertSame(o1, or.getToMany().get(0));
}
}