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 <[email protected]>
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);
+ }
}