File tree Expand file tree Collapse file tree 2 files changed +22
-3
lines changed
main/groovy/de/triology/blog/testdataloader
test/java/de/triology/blog/testdataloader Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change @@ -75,12 +75,17 @@ class EntityDeleter implements EntityCreatedListener {
75
75
private prepareNextEntityForDeletion () {
76
76
def entity = entities. pop()
77
77
try {
78
- return entityManager . merge (entity)
78
+ return mergeNextEntityIfNotAttached (entity)
79
79
} catch (IllegalArgumentException e) {
80
80
LOG . debug(" caught IllegalArgumentException when merging entity $entity , assuming it to be already removed" , e)
81
81
return null
82
82
}
83
83
}
84
84
85
-
85
+ private mergeNextEntityIfNotAttached (Object entity ) {
86
+ if (! entityManager. contains(entity)) {
87
+ return entityManager. merge(entity)
88
+ }
89
+ return entity
90
+ }
86
91
}
Original file line number Diff line number Diff line change @@ -84,9 +84,10 @@ public void deletesAnEntityOnlyOnce() throws Exception {
84
84
}
85
85
86
86
@ Test
87
- public void mergesEntitiesBeforeRemovingThem () throws Exception {
87
+ public void mergesDetachedEntitiesBeforeRemovingThem () throws Exception {
88
88
Object entity = new Object ();
89
89
entityDeleter .entityCreated (entity );
90
+ when (entityManager .contains (entity )).thenReturn (false );
90
91
91
92
entityDeleter .deleteAllEntities ();
92
93
@@ -95,6 +96,19 @@ public void mergesEntitiesBeforeRemovingThem() throws Exception {
95
96
inOrder .verify (entityManager ).remove (entity );
96
97
}
97
98
99
+ @ Test
100
+ public void doesNotMergeAttachedEntitiesBeforeRemovingThem () throws Exception {
101
+ Object entity = new Object ();
102
+ entityDeleter .entityCreated (entity );
103
+ when (entityManager .contains (entity )).thenReturn (true );
104
+
105
+ entityDeleter .deleteAllEntities ();
106
+
107
+ InOrder inOrder = inOrder (entityManager );
108
+ inOrder .verify (entityManager , never ()).merge (entity );
109
+ inOrder .verify (entityManager ).remove (entity );
110
+ }
111
+
98
112
@ Test
99
113
public void doesNotDeleteAlreadyRemovedEntities () throws Exception {
100
114
Object entity = new Object ();
You can’t perform that action at this time.
0 commit comments