@@ -327,5 +327,76 @@ void main() {
327327
328328 expect (result.query, expectedQuery.query);
329329 });
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+ });
330401 });
331402}
0 commit comments