3030import org .junit .Before ;
3131import org .junit .Test ;
3232import org .junit .runner .RunWith ;
33+ import org .mockito .Answers ;
3334import org .mockito .ArgumentCaptor ;
3435import org .mockito .Captor ;
3536import org .mockito .Mock ;
4950import org .springframework .data .mongodb .core .query .Collation ;
5051import org .springframework .data .mongodb .core .query .Update ;
5152
53+ import com .mongodb .WriteConcern ;
5254import com .mongodb .client .MongoCollection ;
5355import com .mongodb .client .MongoDatabase ;
5456import com .mongodb .client .model .DeleteManyModel ;
@@ -67,7 +69,7 @@ public class DefaultBulkOperationsUnitTests {
6769
6870 MongoTemplate template ;
6971 @ Mock MongoDatabase database ;
70- @ Mock MongoCollection <Document > collection ;
72+ @ Mock ( answer = Answers . RETURNS_DEEP_STUBS ) MongoCollection <Document > collection ;
7173 @ Mock MongoDbFactory factory ;
7274 @ Mock DbRefResolver dbRefResolver ;
7375 @ Captor ArgumentCaptor <List <WriteModel <Document >>> captor ;
@@ -156,6 +158,26 @@ public void bulkRemoveShouldMapQueryCorrectly() {
156158 assertThat (updateModel .getFilter ()).isEqualTo (new Document ("first_name" , "danerys" ));
157159 }
158160
161+ @ Test // DATAMONGO-2330
162+ public void writeConcernNotAppliedWhenNotSet () {
163+
164+ ops .updateOne (new BasicQuery ("{}" ).collation (Collation .of ("de" )), new Update ().set ("lastName" , "targaryen" ))
165+ .execute ();
166+
167+ verify (collection , never ()).withWriteConcern (any ());
168+ }
169+
170+ @ Test // DATAMONGO-2330
171+ public void writeConcernAppliedCorrectlyWhenSet () {
172+
173+ ops .setDefaultWriteConcern (WriteConcern .MAJORITY );
174+
175+ ops .updateOne (new BasicQuery ("{}" ).collation (Collation .of ("de" )), new Update ().set ("lastName" , "targaryen" ))
176+ .execute ();
177+
178+ verify (collection ).withWriteConcern (eq (WriteConcern .MAJORITY ));
179+ }
180+
159181 class SomeDomainType {
160182
161183 @ Id String id ;
0 commit comments