You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by jo...@apache.org on 2019/05/13 20:11:29 UTC
[cayenne] 01/02: Add failing test for transient insert and delete
of a to-many relationship value
This is an automated email from the ASF dual-hosted git repository.
johnthuss pushed a commit to branch cayenne42testing3
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit ff91fa76ca04607c71440851894f19e2d3d7e97d
Author: John Huss <jo...@apache.org>
AuthorDate: Mon May 13 11:58:43 2019 -0500
Add failing test for transient insert and delete of a to-many relationship value
---
.../apache/cayenne/access/OptimisticLockingIT.java | 27 ++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
index 14b623c..c24a4a3 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
@@ -26,6 +26,7 @@ import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.query.SortOrder;
import org.apache.cayenne.test.jdbc.DBHelper;
import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.testdo.locking.LockingHelper;
import org.apache.cayenne.testdo.locking.RelLockingTestEntity;
import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
import org.apache.cayenne.unit.di.server.CayenneProjects;
@@ -454,10 +455,36 @@ public class OptimisticLockingIT extends ServerCase {
SimpleLockingTestEntity object1 = object.getToSimpleLockingTest();
object.setToSimpleLockingTest(null);
context.commitChanges();
+ assertNull(object.getToSimpleLockingTest());
// change to-one relationship to non-null and save... should lock on null value
object.setToSimpleLockingTest(object1);
context.commitChanges();
+ assertNotNull(object.getToSimpleLockingTest());
+ }
+
+ @Test
+ public void testTransientInsertAndDeleteOfToManyRelationship() throws Exception {
+ createLockingOnToOneDataSet();
+
+ List<RelLockingTestEntity> allObjects = new SelectQuery<>(
+ RelLockingTestEntity.class).select(context);
+ assertEquals(1, allObjects.size());
+
+ RelLockingTestEntity object = allObjects.get(0);
+
+ LockingHelper object1 = object.getLockingHelpers().get(0);
+
+ // create and then immediately delete a to-many relationship value
+ LockingHelper object2 = context.newObject(LockingHelper.class);
+ object.addToLockingHelpers(object2);
+ object.removeFromLockingHelpers(object2);
+ context.deleteObject(object2);
+ assertEquals(1, object.getLockingHelpers().size());
+
+ object1.setName("updated"); // this will force the commit to actually execute some SQL
+
+ context.commitChanges();
}
@Test