@@ -48,6 +48,16 @@ class IssueFilterApiTest < Redmine::ApiTest::Base
48
48
}
49
49
}
50
50
51
+ POLY_IN = {
52
+ 'type' => 'Feature' ,
53
+ 'geometry' => {
54
+ 'type' => 'Polygon' ,
55
+ 'coordinates' => [
56
+ [ [ 123.269691 , 9.305099 ] , [ 123.279691 , 9.305099 ] , [ 123.279691 , 9.405099 ] , [ 123.269691 , 9.405099 ] ]
57
+ ]
58
+ }
59
+ }
60
+
51
61
# x1,y1,x2,y2 (Lng1,Lat1,...)
52
62
BBOX = '123.193645|9.256139|123.331833|9.364216'
53
63
@@ -204,4 +214,32 @@ class IssueFilterApiTest < Redmine::ApiTest::Base
204
214
assert_equal issue_out . id , data [ 'issues' ] [ 0 ] [ 'id' ]
205
215
end
206
216
217
+
218
+ test 'should find polygon included in bounding box' do
219
+
220
+ get '/projects/ecookbook/issues.json' , params : { status_id : 'o' }
221
+
222
+ assert_response :success
223
+ assert data = JSON . parse ( response . body )
224
+ assert_equal 6 , data [ 'issues' ] . size
225
+
226
+ issue_in = @project . issues . find 1
227
+ issue_in . update_attribute :geojson , POLY_IN . to_json
228
+
229
+ issue_out = @project . issues . find 2
230
+ issue_out . update_attribute :geojson , POINT_OUT . to_json
231
+
232
+ # find everyting inside the given box
233
+ # using the shorter API parameter format
234
+
235
+ get '/projects/ecookbook/issues.json' , params : {
236
+ status_id : 'o' , bbox : "=#{ BBOX } "
237
+ }
238
+ assert_response :success
239
+ assert data = JSON . parse ( response . body )
240
+ assert_equal 1 , data [ 'issues' ] . size
241
+ assert_equal issue_in . id , data [ 'issues' ] [ 0 ] [ 'id' ]
242
+ end
243
+
244
+
207
245
end
0 commit comments