@@ -60,17 +60,17 @@ def setUp(self):
6060 VectorItem .objects .create (
6161 dataset = self .dataset_1 ,
6262 geometry = Point (80.5 , 10.232 ),
63- metadata = {"type" : "administrative" , "name" : "Point 1" },
63+ metadata = {"type" : "administrative" , "name" : "Point 1" , "area" : 5000 },
6464 )
6565 VectorItem .objects .create (
6666 dataset = self .dataset_1 ,
6767 geometry = LineString ([(0 , 0 ), (0 , 3 ), (3 , 3 ), (3 , 0 ), (6 , 6 ), (0 , 0 )]),
68- metadata = {"type" : "administrative" , "name" : "Line 123" },
68+ metadata = {"type" : "administrative" , "name" : "Line 123" , "area" : 5321 },
6969 )
7070 VectorItem .objects .create (
7171 dataset = self .dataset_2 ,
7272 geometry = Polygon ([(0 , 0 ), (0 , 3 ), (3 , 3 ), (3 , 0 ), (0 , 0 )]),
73- metadata = {"type" : "administrative" , "name" : "Area 1" },
73+ metadata = {"type" : "administrative" , "name" : "Area 1" , "area" : 3432 },
7474 )
7575 self .url = reverse ("datasets:vector-data" , args = [self .dataset_1 .id ])
7676
@@ -109,3 +109,24 @@ def test_filters(self):
109109 "coordinates" : [80.5 , 10.232 ],
110110 }
111111 assert req .data .get ("features" )[0 ]["properties" ]["name" ] == "Point 1"
112+
113+ # filter by metadata
114+ req = self .client .get (self .url , {"filter" : "name__icontains=Point" })
115+ assert req .status_code == status .HTTP_200_OK
116+ assert req .data .get ("count" ) == 1
117+
118+ req = self .client .get (self .url , {"filter" : "area__lt=5000" })
119+ assert req .status_code == status .HTTP_200_OK
120+ assert req .data .get ("count" ) == 0
121+
122+ req = self .client .get (
123+ self .url , {"filter" : "area__gte=5000, type=administrative" }
124+ )
125+ assert req .status_code == status .HTTP_200_OK
126+ assert req .data .get ("count" ) == 2
127+
128+ req = self .client .get (
129+ self .url , {"filter" : "area__gte=5000" , "in_bbox" : "80,10,81,11" }
130+ )
131+ assert req .status_code == status .HTTP_200_OK
132+ assert req .data .get ("count" ) == 1
0 commit comments