@@ -327,5 +327,76 @@ void main() {
327
327
328
328
expect (result.query, expectedQuery.query);
329
329
});
330
+
331
+ test ('wherePolygonContains' , () async {
332
+ // arrange
333
+ final QueryBuilder <ParseObject > queryBuilder =
334
+ QueryBuilder <ParseObject >(ParseObject ('TEST_SCHEMA' , client: client));
335
+ double latitude = 84.17724609375 ;
336
+ double longitude = - 53.69670647530323 ;
337
+ ParseGeoPoint point =
338
+ ParseGeoPoint (latitude: latitude, longitude: longitude);
339
+ queryBuilder.wherePolygonContains ("geometry" , point);
340
+
341
+ var desiredOutput = {
342
+ "results" : [
343
+ {
344
+ "objectId" : "eT9muOxBTK" ,
345
+ "createdAt" : "2022-07-25T13:46:06.092Z" ,
346
+ "updatedAt" : "2022-07-25T13:46:23.586Z" ,
347
+ "geometry" : {
348
+ "type" : "Polygon" ,
349
+ "coordinates" : [
350
+ [
351
+ [84.17724609375 , - 53.69670647530323 ],
352
+ [83.1884765625 , - 54.61025498157913 ],
353
+ [84.814453125 , - 55.14120964449505 ],
354
+ [85.67138671875 , - 54.40614309031968 ],
355
+ [84.17724609375 , - 53.69670647530323 ]
356
+ ]
357
+ ]
358
+ }
359
+ }
360
+ ]
361
+ };
362
+
363
+ when (client.get (
364
+ any,
365
+ options: anyNamed ("options" ),
366
+ onReceiveProgress: anyNamed ("onReceiveProgress" ),
367
+ )).thenAnswer ((_) async => ParseNetworkResponse (
368
+ statusCode: 200 , data: jsonEncode (desiredOutput)));
369
+
370
+ // act
371
+ ParseResponse response = await queryBuilder.query ();
372
+ ParseObject parseObject = response.results? .first;
373
+
374
+ final Uri result = Uri .parse (verify (client.get (
375
+ captureAny,
376
+ options: anyNamed ("options" ),
377
+ onReceiveProgress: anyNamed ("onReceiveProgress" ),
378
+ )).captured.single);
379
+
380
+ var queryDesiredOutput = {
381
+ "geometry" : {
382
+ "\$ geoIntersects" : {
383
+ "\$ point" : {
384
+ "__type" : "GeoPoint" ,
385
+ "latitude" : latitude,
386
+ "longitude" : longitude
387
+ }
388
+ }
389
+ }
390
+ };
391
+ final Uri expectedQuery =
392
+ Uri (query: 'where=' + jsonEncode (queryDesiredOutput));
393
+
394
+ // assert
395
+ expect (response.results? .first, isA <ParseObject >());
396
+ expect (parseObject.objectId, "eT9muOxBTK" );
397
+ expect (parseObject.containsKey ("geometry" ), true );
398
+ expect (result.path, '/classes/TEST_SCHEMA' );
399
+ expect (result.query, expectedQuery.query);
400
+ });
330
401
});
331
402
}
0 commit comments