2323
2424import org .bson .Document ;
2525import org .junit .Test ;
26-
2726import org .springframework .data .geo .Point ;
2827import org .springframework .data .mongodb .InvalidMongoDbApiUsageException ;
2928import org .springframework .data .mongodb .core .geo .GeoJsonLineString ;
3029import org .springframework .data .mongodb .core .geo .GeoJsonPoint ;
30+ import org .springframework .data .mongodb .core .schema .JsonSchemaObject .Type ;
3131import org .springframework .data .mongodb .core .schema .MongoJsonSchema ;
3232
3333/**
@@ -90,8 +90,7 @@ public void equalIfCriteriaMatches() {
9090 @ Test // GH-3286
9191 public void shouldBuildCorrectAndOperator () {
9292
93- Collection <Criteria > operatorCriteria = Arrays .asList (Criteria .where ("x" ).is (true ),
94- Criteria .where ("y" ).is (42 ),
93+ Collection <Criteria > operatorCriteria = Arrays .asList (Criteria .where ("x" ).is (true ), Criteria .where ("y" ).is (42 ),
9594 Criteria .where ("z" ).is ("value" ));
9695
9796 Criteria criteria = Criteria .where ("foo" ).is ("bar" ).andOperator (operatorCriteria );
@@ -103,8 +102,7 @@ public void shouldBuildCorrectAndOperator() {
103102 @ Test // GH-3286
104103 public void shouldBuildCorrectOrOperator () {
105104
106- Collection <Criteria > operatorCriteria = Arrays .asList (Criteria .where ("x" ).is (true ),
107- Criteria .where ("y" ).is (42 ),
105+ Collection <Criteria > operatorCriteria = Arrays .asList (Criteria .where ("x" ).is (true ), Criteria .where ("y" ).is (42 ),
108106 Criteria .where ("z" ).is ("value" ));
109107
110108 Criteria criteria = Criteria .where ("foo" ).is ("bar" ).orOperator (operatorCriteria );
@@ -116,8 +114,7 @@ public void shouldBuildCorrectOrOperator() {
116114 @ Test // GH-3286
117115 public void shouldBuildCorrectNorOperator () {
118116
119- Collection <Criteria > operatorCriteria = Arrays .asList (Criteria .where ("x" ).is (true ),
120- Criteria .where ("y" ).is (42 ),
117+ Collection <Criteria > operatorCriteria = Arrays .asList (Criteria .where ("x" ).is (true ), Criteria .where ("y" ).is (42 ),
121118 Criteria .where ("z" ).is ("value" ));
122119
123120 Criteria criteria = Criteria .where ("foo" ).is ("bar" ).norOperator (operatorCriteria );
@@ -205,6 +202,14 @@ public void getCriteriaObjectShouldRespectNotWhenNoKeyPresent() {
205202 assertThat (document ).isEqualTo (new Document ().append ("$not" , new Document ("$lt" , "foo" )));
206203 }
207204
205+ @ Test // GH-4220
206+ public void usesCorrectBsonType () {
207+
208+ Document document = new Criteria ("foo" ).type (Type .BOOLEAN ).getCriteriaObject ();
209+
210+ assertThat (document ).containsEntry ("foo.$type" , Collections .singletonList ("bool" ));
211+ }
212+
208213 @ Test // DATAMONGO-1135
209214 public void geoJsonTypesShouldBeWrappedInGeometry () {
210215
@@ -302,8 +307,7 @@ public void shouldAppendBitsAllClearWithIntBitmaskCorrectly() {
302307
303308 Criteria numericBitmaskCriteria = new Criteria ("field" ).bits ().allClear (0b101);
304309
305- assertThat (numericBitmaskCriteria .getCriteriaObject ())
306- .isEqualTo ("{ \" field\" : { \" $bitsAllClear\" : 5} }" );
310+ assertThat (numericBitmaskCriteria .getCriteriaObject ()).isEqualTo ("{ \" field\" : { \" $bitsAllClear\" : 5} }" );
307311 }
308312
309313 @ Test // DATAMONGO-1808
@@ -320,8 +324,7 @@ public void shouldAppendBitsAllSetWithIntBitmaskCorrectly() {
320324
321325 Criteria numericBitmaskCriteria = new Criteria ("field" ).bits ().allSet (0b101);
322326
323- assertThat (numericBitmaskCriteria .getCriteriaObject ())
324- .isEqualTo ("{ \" field\" : { \" $bitsAllSet\" : 5} }" );
327+ assertThat (numericBitmaskCriteria .getCriteriaObject ()).isEqualTo ("{ \" field\" : { \" $bitsAllSet\" : 5} }" );
325328 }
326329
327330 @ Test // DATAMONGO-1808
@@ -338,8 +341,7 @@ public void shouldAppendBitsAnyClearWithIntBitmaskCorrectly() {
338341
339342 Criteria numericBitmaskCriteria = new Criteria ("field" ).bits ().anyClear (0b101);
340343
341- assertThat (numericBitmaskCriteria .getCriteriaObject ())
342- .isEqualTo ("{ \" field\" : { \" $bitsAnyClear\" : 5} }" );
344+ assertThat (numericBitmaskCriteria .getCriteriaObject ()).isEqualTo ("{ \" field\" : { \" $bitsAnyClear\" : 5} }" );
343345 }
344346
345347 @ Test // DATAMONGO-1808
@@ -356,8 +358,7 @@ public void shouldAppendBitsAnySetWithIntBitmaskCorrectly() {
356358
357359 Criteria numericBitmaskCriteria = new Criteria ("field" ).bits ().anySet (0b101);
358360
359- assertThat (numericBitmaskCriteria .getCriteriaObject ())
360- .isEqualTo ("{ \" field\" : { \" $bitsAnySet\" : 5} }" );
361+ assertThat (numericBitmaskCriteria .getCriteriaObject ()).isEqualTo ("{ \" field\" : { \" $bitsAnySet\" : 5} }" );
361362 }
362363
363364 @ Test // DATAMONGO-1808
@@ -429,14 +430,10 @@ public void shouldEqualForSamePatternAndFlags() {
429430 @ Test // GH-3414
430431 public void shouldEqualForNestedPattern () {
431432
432- Criteria left = new Criteria ("a" ).orOperator (
433- new Criteria ("foo" ).regex ("value" , "i" ),
434- new Criteria ("bar" ).regex ("value" )
435- );
436- Criteria right = new Criteria ("a" ).orOperator (
437- new Criteria ("foo" ).regex ("value" , "i" ),
438- new Criteria ("bar" ).regex ("value" )
439- );
433+ Criteria left = new Criteria ("a" ).orOperator (new Criteria ("foo" ).regex ("value" , "i" ),
434+ new Criteria ("bar" ).regex ("value" ));
435+ Criteria right = new Criteria ("a" ).orOperator (new Criteria ("foo" ).regex ("value" , "i" ),
436+ new Criteria ("bar" ).regex ("value" ));
440437
441438 assertThat (left ).isEqualTo (right );
442439 }
0 commit comments