15
15
*/
16
16
package org .springframework .data .mongodb .core ;
17
17
18
- import static org .hamcrest .CoreMatchers .*;
19
- import static org .junit .Assert .*;
18
+ import static org .assertj .core .api .Assertions .*;
20
19
21
20
import java .util .ArrayList ;
22
21
import java .util .Arrays ;
23
22
import java .util .List ;
24
23
import java .util .Optional ;
25
24
26
- import com .mongodb .BulkWriteException ;
27
25
import org .bson .Document ;
28
- import org .hamcrest .core .IsInstanceOf ;
29
26
import org .junit .Before ;
30
27
import org .junit .Test ;
31
28
import org .junit .runner .RunWith ;
@@ -95,49 +92,51 @@ public void insertOrdered() {
95
92
96
93
List <BaseDoc > documents = Arrays .asList (newDoc ("1" ), newDoc ("2" ));
97
94
98
- assertThat (createBulkOps (BulkMode .ORDERED ).insert (documents ).execute ().getInsertedCount (), is ( 2 ) );
95
+ assertThat (createBulkOps (BulkMode .ORDERED ).insert (documents ).execute ().getInsertedCount ()). isEqualTo ( 2 );
99
96
}
100
97
101
98
@ Test // DATAMONGO-934
102
99
public void insertOrderedFails () {
103
100
104
101
List <BaseDoc > documents = Arrays .asList (newDoc ("1" ), newDoc ("1" ), newDoc ("2" ));
105
102
106
- try {
107
- createBulkOps (BulkMode .ORDERED ).insert (documents ).execute ();
108
- fail ();
109
- } catch (DuplicateKeyException e ) {
103
+ assertThatThrownBy (() -> createBulkOps (BulkMode .ORDERED ).insert (documents ).execute ()) //
104
+ .isInstanceOf (DuplicateKeyException .class ) //
105
+ .hasCauseInstanceOf (MongoBulkWriteException .class ) //
106
+ .extracting (Throwable ::getCause ) //
107
+ .satisfies (it -> {
110
108
111
- assertThat ( e . getCause (), IsInstanceOf . instanceOf (MongoBulkWriteException . class )) ;
112
- assertThat ((( MongoBulkWriteException ) e . getCause ()). getWriteResult ().getInsertedCount (), is ( 1 )); // fails after first error
113
- assertThat ((( MongoBulkWriteException ) e . getCause ()).getWriteErrors (), notNullValue () );
114
- assertThat ((( MongoBulkWriteException ) e . getCause ()). getWriteErrors ().size (), is ( 1 ) );
115
- }
109
+ MongoBulkWriteException ex = (MongoBulkWriteException ) it ;
110
+ assertThat (ex . getWriteResult ().getInsertedCount ()). isOne ();
111
+ assertThat (ex . getWriteErrors ()).isNotNull ( );
112
+ assertThat (ex . getWriteErrors ().size ()). isOne ( );
113
+ });
116
114
}
117
115
118
116
@ Test // DATAMONGO-934
119
117
public void insertUnOrdered () {
120
118
121
119
List <BaseDoc > documents = Arrays .asList (newDoc ("1" ), newDoc ("2" ));
122
120
123
- assertThat (createBulkOps (BulkMode .UNORDERED ).insert (documents ).execute ().getInsertedCount (), is ( 2 ) );
121
+ assertThat (createBulkOps (BulkMode .UNORDERED ).insert (documents ).execute ().getInsertedCount ()). isEqualTo ( 2 );
124
122
}
125
123
126
124
@ Test // DATAMONGO-934
127
125
public void insertUnOrderedContinuesOnError () {
128
126
129
127
List <BaseDoc > documents = Arrays .asList (newDoc ("1" ), newDoc ("1" ), newDoc ("2" ));
130
128
131
- try {
132
- createBulkOps (BulkMode .UNORDERED ).insert (documents ).execute ();
133
- fail ();
134
- } catch (DuplicateKeyException e ) {
129
+ assertThatThrownBy (() -> createBulkOps (BulkMode .UNORDERED ).insert (documents ).execute ()) //
130
+ .isInstanceOf (DuplicateKeyException .class ) //
131
+ .hasCauseInstanceOf (MongoBulkWriteException .class ) //
132
+ .extracting (Throwable ::getCause ) //
133
+ .satisfies (it -> {
135
134
136
- assertThat ( e . getCause (), IsInstanceOf . instanceOf (MongoBulkWriteException . class )) ;
137
- assertThat ((( MongoBulkWriteException ) e . getCause ()). getWriteResult ().getInsertedCount (), is (2 )); // two docs were inserted
138
- assertThat ((( MongoBulkWriteException ) e . getCause ()).getWriteErrors (), notNullValue () );
139
- assertThat ((( MongoBulkWriteException ) e . getCause ()). getWriteErrors ().size (), is ( 1 ) );
140
- }
135
+ MongoBulkWriteException ex = (MongoBulkWriteException ) it ;
136
+ assertThat (ex . getWriteResult ().getInsertedCount ()). isEqualTo (2 );
137
+ assertThat (ex . getWriteErrors ()).isNotNull ( );
138
+ assertThat (ex . getWriteErrors ().size ()). isOne ( );
139
+ });
141
140
}
142
141
143
142
@ Test // DATAMONGO-934
@@ -149,12 +148,12 @@ public void upsertDoesUpdate() {
149
148
upsert (where ("value" , "value1" ), set ("value" , "value2" )).//
150
149
execute ();
151
150
152
- assertThat (result , notNullValue () );
153
- assertThat (result .getMatchedCount (), is ( 2 ) );
154
- assertThat (result .getModifiedCount (), is ( 2 ) );
155
- assertThat (result .getInsertedCount (), is ( 0 ) );
156
- assertThat (result .getUpserts (), is ( notNullValue ()) );
157
- assertThat (result .getUpserts ().size (), is ( 0 ) );
151
+ assertThat (result ). isNotNull ( );
152
+ assertThat (result .getMatchedCount ()). isEqualTo ( 2 );
153
+ assertThat (result .getModifiedCount ()). isEqualTo ( 2 );
154
+ assertThat (result .getInsertedCount ()). isZero ( );
155
+ assertThat (result .getUpserts ()). isNotNull ( );
156
+ assertThat (result .getUpserts ().size ()). isZero ( );
158
157
}
159
158
160
159
@ Test // DATAMONGO-934
@@ -164,11 +163,11 @@ public void upsertDoesInsert() {
164
163
upsert (where ("_id" , "1" ), set ("value" , "v1" )).//
165
164
execute ();
166
165
167
- assertThat (result , notNullValue () );
168
- assertThat (result .getMatchedCount (), is ( 0 ) );
169
- assertThat (result .getModifiedCount (), is ( 0 ) );
170
- assertThat (result .getUpserts (), is ( notNullValue ()) );
171
- assertThat (result .getUpserts ().size (), is ( 1 ) );
166
+ assertThat (result ). isNotNull ( );
167
+ assertThat (result .getMatchedCount ()). isZero ( );
168
+ assertThat (result .getModifiedCount ()). isZero ( );
169
+ assertThat (result .getUpserts ()). isNotNull ( );
170
+ assertThat (result .getUpserts ().size ()). isOne ( );
172
171
}
173
172
174
173
@ Test // DATAMONGO-934
@@ -220,10 +219,24 @@ public void replaceOneDoesReplace() {
220
219
replaceOne (where ("_id" , "1" ), rawDoc ("1" , "value2" )).//
221
220
execute ();
222
221
223
- assertThat (result , notNullValue ());
224
- assertThat (result .getMatchedCount (), is (1 ));
225
- assertThat (result .getModifiedCount (), is (1 ));
226
- assertThat (result .getInsertedCount (), is (0 ));
222
+ assertThat (result ).isNotNull ();
223
+ assertThat (result .getMatchedCount ()).isOne ();
224
+ assertThat (result .getModifiedCount ()).isOne ();
225
+ assertThat (result .getInsertedCount ()).isZero ();
226
+ }
227
+
228
+ @ Test // DATAMONGO-2218
229
+ public void replaceOneWithUpsert () {
230
+
231
+ com .mongodb .bulk .BulkWriteResult result = createBulkOps (BulkMode .ORDERED ).//
232
+ replaceOne (where ("_id" , "1" ), rawDoc ("1" , "value2" ), FindAndReplaceOptions .options ().upsert ()).//
233
+ execute ();
234
+
235
+ assertThat (result ).isNotNull ();
236
+ assertThat (result .getMatchedCount ()).isZero ();
237
+ assertThat (result .getInsertedCount ()).isZero ();
238
+ assertThat (result .getModifiedCount ()).isZero ();
239
+ assertThat (result .getUpserts ().size ()).isOne ();
227
240
}
228
241
229
242
/**
@@ -237,10 +250,10 @@ public void mixedBulkOrdered() {
237
250
remove (where ("value" , "v2" )).//
238
251
execute ();
239
252
240
- assertThat (result , notNullValue () );
241
- assertThat (result .getInsertedCount (), is ( 1 ) );
242
- assertThat (result .getModifiedCount (), is ( 1 ) );
243
- assertThat (result .getDeletedCount (), is ( 1 ) );
253
+ assertThat (result ). isNotNull ( );
254
+ assertThat (result .getInsertedCount ()). isOne ( );
255
+ assertThat (result .getModifiedCount ()). isOne ( );
256
+ assertThat (result .getDeletedCount ()). isOne ( );
244
257
}
245
258
246
259
/**
@@ -257,10 +270,10 @@ public void mixedBulkOrderedWithList() {
257
270
com .mongodb .bulk .BulkWriteResult result = createBulkOps (BulkMode .ORDERED , BaseDoc .class ).insert (inserts )
258
271
.updateMulti (updates ).remove (removes ).execute ();
259
272
260
- assertThat (result , notNullValue () );
261
- assertThat (result .getInsertedCount (), is ( 3 ) );
262
- assertThat (result .getModifiedCount (), is ( 2 ) );
263
- assertThat (result .getDeletedCount (), is ( 1 ) );
273
+ assertThat (result ). isNotNull ( );
274
+ assertThat (result .getInsertedCount ()). isEqualTo ( 3 );
275
+ assertThat (result .getModifiedCount ()). isEqualTo ( 2 );
276
+ assertThat (result .getDeletedCount ()). isOne ( );
264
277
}
265
278
266
279
@ Test // DATAMONGO-1534
@@ -275,8 +288,8 @@ public void insertShouldConsiderInheritance() {
275
288
276
289
BaseDoc doc = operations .findOne (where ("_id" , specialDoc .id ), BaseDoc .class , COLLECTION_NAME );
277
290
278
- assertThat (doc , notNullValue () );
279
- assertThat (doc , instanceOf (SpecialDoc .class ) );
291
+ assertThat (doc ). isNotNull ( );
292
+ assertThat (doc ). isInstanceOf (SpecialDoc .class );
280
293
}
281
294
282
295
private void testUpdate (BulkMode mode , boolean multi , int expectedUpdates ) {
@@ -292,7 +305,7 @@ private void testUpdate(BulkMode mode, boolean multi, int expectedUpdates) {
292
305
int modifiedCount = multi ? bulkOps .updateMulti (updates ).execute ().getModifiedCount ()
293
306
: bulkOps .updateOne (updates ).execute ().getModifiedCount ();
294
307
295
- assertThat (modifiedCount , is (expectedUpdates ) );
308
+ assertThat (modifiedCount ). isEqualTo (expectedUpdates );
296
309
}
297
310
298
311
private void testRemove (BulkMode mode ) {
@@ -301,7 +314,7 @@ private void testRemove(BulkMode mode) {
301
314
302
315
List <Query > removes = Arrays .asList (where ("_id" , "1" ), where ("value" , "value2" ));
303
316
304
- assertThat (createBulkOps (mode ).remove (removes ).execute ().getDeletedCount (), is ( 3 ) );
317
+ assertThat (createBulkOps (mode ).remove (removes ).execute ().getDeletedCount ()). isEqualTo ( 3 );
305
318
}
306
319
307
320
private void testReplaceOne (BulkMode mode ) {
@@ -314,7 +327,7 @@ private void testReplaceOne(BulkMode mode) {
314
327
Document document = rawDoc ("1" , "value2" );
315
328
int modifiedCount = bulkOps .replaceOne (query , document ).execute ().getModifiedCount ();
316
329
317
- assertThat (modifiedCount , is ( 1 ) );
330
+ assertThat (modifiedCount ). isOne ( );
318
331
}
319
332
320
333
private BulkOperations createBulkOps (BulkMode mode ) {
@@ -324,7 +337,8 @@ private BulkOperations createBulkOps(BulkMode mode) {
324
337
private BulkOperations createBulkOps (BulkMode mode , Class <?> entityType ) {
325
338
326
339
Optional <? extends MongoPersistentEntity <?>> entity = entityType != null
327
- ? Optional .of (operations .getConverter ().getMappingContext ().getPersistentEntity (entityType )) : Optional .empty ();
340
+ ? Optional .of (operations .getConverter ().getMappingContext ().getPersistentEntity (entityType ))
341
+ : Optional .empty ();
328
342
329
343
BulkOperationContext bulkOperationContext = new BulkOperationContext (mode , entity ,
330
344
new QueryMapper (operations .getConverter ()), new UpdateMapper (operations .getConverter ()));
0 commit comments