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));
     }
 }