This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/STABLE-4.2 by this push:
     new 4db8eee39 Cleanup and add test for CAY-2091
4db8eee39 is described below

commit 4db8eee3919266af6dbd7d5a41b37d4ce84af252
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Wed Jul 31 12:03:28 2024 +0400

    Cleanup and add test for CAY-2091
    
    (cherry picked from commit 26aeaf7060ef779938fae4de3012f710fd4c4e28)
---
 .../apache/cayenne/access/EntityInheritanceIT.java | 63 ++++++++++++----------
 1 file changed, 36 insertions(+), 27 deletions(-)

diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
index 76e8ee091..f86437b87 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
@@ -19,13 +19,17 @@
 
 package org.apache.cayenne.access;
 
+import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.query.SelectById;
 import org.apache.cayenne.testdo.inheritance.BaseEntity;
+import org.apache.cayenne.testdo.inheritance.DirectToSubEntity;
 import org.apache.cayenne.testdo.inheritance.RelatedEntity;
 import org.apache.cayenne.testdo.inheritance.SubEntity;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -37,10 +41,10 @@ public class EntityInheritanceIT extends ServerCase {
     private DataContext context;
 
     /**
-     * Test for CAY-1008: Reverse relationships may not be correctly set if 
inheritance is
-     * used.
+     * Test for CAY-1008: Reverse relationships may not be correctly set if 
inheritance is used.
      */
     @Test
+    @Ignore("This test fails")
     public void testCAY1008() {
         RelatedEntity related = context.newObject(RelatedEntity.class);
 
@@ -56,42 +60,47 @@ public class EntityInheritanceIT extends ServerCase {
         assertEquals(2, related.getBaseEntities().size());
 
         // TODO: andrus 2008/03/28 - this fails...
-        // assertEquals(1, related.getSubEntities().size());
+        assertEquals(1, related.getSubEntities().size());
     }
 
     /**
      * Test for CAY-1009: Bogus runtime relationships can mess up commit.
      */
     @Test
+    @Ignore("Test fails")
     public void testCAY1009() {
-
         // We should have only one relationship. DirectToSubEntity -> 
SubEntity.
+        assertEquals(1, context
+                .getEntityResolver()
+                .getObjEntity("DirectToSubEntity")
+                .getRelationships()
+                .size());
 
-        // this fails as a result of 
'EntityResolver().applyObjectLayerDefaults()'
-        // creating incorrect relationships
-        // assertEquals(1, context
-        // .getEntityResolver()
-        // .getObjEntity("DirectToSubEntity")
-        // .getRelationships()
-        // .size());
+        DirectToSubEntity direct = context.newObject(DirectToSubEntity.class);
 
-        // We should still just have the one mapped relationship, but we in 
fact now have
-        // two:
-        // DirectToSubEntity -> BaseEntity and DirectToSubEntity -> SubEntity.
+        SubEntity sub = context.newObject(SubEntity.class);
+        sub.setToDirectToSubEntity(direct);
 
-        // TODO: andrus 2008/03/28 - this fails...
-        // assertEquals(1, 
context.getEntityResolver().getObjEntity("DirectToSubEntity")
-        // .getRelationships().size());
-        //
-        // DirectToSubEntity direct = 
context.newObject(DirectToSubEntity.class);
-        //
-        // SubEntity sub = context.newObject(SubEntity.class);
-        // sub.setToDirectToSubEntity(direct);
-        //
-        // assertEquals(1, direct.getSubEntities().size());
-        //
-        // context.deleteObject(sub);
-        // assertEquals(0, direct.getSubEntities().size());
+        assertEquals(1, direct.getSubEntities().size());
+
+        context.deleteObject(sub);
+
+        assertEquals(0, direct.getSubEntities().size());
     }
 
+    @Test
+    public void testCAY2091() {
+        RelatedEntity related = context.newObject(RelatedEntity.class);
+        SubEntity subEntity = context.newObject(SubEntity.class);
+        subEntity.setToRelatedEntity(related);
+        context.commitChanges();
+
+        int subEntityId = Cayenne.intPKForObject(subEntity);
+
+        BaseEntity forPkLoadedEntity = Cayenne.objectForPK(context, 
BaseEntity.class, subEntityId);
+        assertEquals(forPkLoadedEntity.getClass(), SubEntity.class);
+
+        BaseEntity selectLoadedEntity = SelectById.query(BaseEntity.class, 
subEntityId).selectOne(context);
+        assertEquals(selectLoadedEntity.getClass(), SubEntity.class);
+    }
 }

Reply via email to