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