Skip to content

Commit 4201f04

Browse files
committed
Improved issue geom change tests
1 parent 71c1f4b commit 4201f04

File tree

2 files changed

+66
-8
lines changed

2 files changed

+66
-8
lines changed

test/test_helper.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ def point_geojson(coordinates)
1414
{'type'=>'Feature','geometry'=>{ 'type'=>'Point','coordinates'=> coordinates}}.to_json
1515
end
1616

17+
def linestring_geojson(coordinates)
18+
{'type'=>'Feature','geometry'=>{ 'type'=>'LineString','coordinates'=> coordinates}}.to_json
19+
end
20+
21+
def polygon_geojson(coordinates)
22+
{'type'=>'Feature','geometry'=>{ 'type'=>'Polygon','coordinates'=> coordinates}}.to_json
23+
end
24+
1725
def multipolygon_geojson(coordinates)
1826
{'type'=>'Feature','geometry'=>{ 'type'=>'MultiPolygon','coordinates'=> coordinates}}.to_json
1927
end

test/unit/issue_test.rb

Lines changed: 58 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,69 @@ class IssueTest < GttTest
6363
assert_geojson_collection Issue.geojson
6464
end
6565

66-
test 'should ignore small geom changes' do
66+
test 'should ignore small point geom changes' do
6767
coordinates = [135.220734222412, 34.7056906000311]
6868

69-
@issue.geojson = point_geojson(coordinates)
70-
old_coordinates = JSON.parse(@issue.geojson).fetch("geometry").fetch("coordinates")
71-
new_coordinates = old_coordinates.each{|c| c + 0.00000001}
69+
@issue.update_attribute :geojson, point_geojson(coordinates)
70+
@issue.instance_variable_set "@geojson", nil
71+
old_coordinates = @issue.geojson["geometry"]["coordinates"]
72+
73+
new_coordinates = old_coordinates.map{|c| c + 0.000000001}
7274
@issue.update_attribute :geojson, point_geojson(new_coordinates)
73-
@issue.reload
74-
assert_equal old_coordinates, JSON.parse(@issue.geojson).fetch("geometry").fetch("coordinates")
75+
@issue.instance_variable_set "@geojson", nil
76+
assert_equal old_coordinates, @issue.geojson["geometry"]["coordinates"]
7577

7678
new_coordinates = [old_coordinates[0] + 0.2, old_coordinates[1]]
7779
@issue.update_attribute :geojson, point_geojson(new_coordinates)
78-
@issue.reload
79-
assert_equal new_coordinates, JSON.parse(@issue.geojson).fetch("geometry").fetch("coordinates")
80+
@issue.instance_variable_set "@geojson", nil
81+
assert_equal new_coordinates, @issue.geojson["geometry"]["coordinates"]
82+
end
83+
84+
test 'should ignore small linestring geom changes' do
85+
coordinates = test_coordinates[0]
86+
87+
@issue.update_attribute :geojson, linestring_geojson(coordinates)
88+
@issue.instance_variable_set "@geojson", nil
89+
old_coordinates = @issue.geojson["geometry"]["coordinates"]
90+
91+
new_coordinates = old_coordinates.map{|c| [c[0] + 0.000000001, c[1] + 0.000000001]}
92+
@issue.update_attribute :geojson, linestring_geojson(new_coordinates)
93+
@issue.instance_variable_set "@geojson", nil
94+
assert_equal old_coordinates, @issue.geojson["geometry"]["coordinates"]
95+
96+
new_coordinates = old_coordinates.map{|c| [c[0] + 0.2, c[1]]}
97+
@issue.update_attribute :geojson, linestring_geojson(new_coordinates)
98+
@issue.instance_variable_set "@geojson", nil
99+
assert_equal new_coordinates, @issue.geojson["geometry"]["coordinates"]
100+
101+
new_coordinates = old_coordinates.map{|c| [c[0], c[1]]}
102+
new_coordinates.delete_at(1)
103+
@issue.update_attribute :geojson, linestring_geojson(new_coordinates)
104+
@issue.instance_variable_set "@geojson", nil
105+
assert_equal new_coordinates, @issue.geojson["geometry"]["coordinates"]
106+
end
107+
108+
test 'should ignore small polygon geom changes' do
109+
coordinates = test_coordinates
110+
111+
@issue.update_attribute :geojson, polygon_geojson(coordinates)
112+
@issue.instance_variable_set "@geojson", nil
113+
old_coordinates = @issue.geojson["geometry"]["coordinates"]
114+
115+
new_coordinates = [old_coordinates[0].map{|c| [c[0] + 0.000000001, c[1] + 0.000000001]}]
116+
@issue.update_attribute :geojson, polygon_geojson(new_coordinates)
117+
@issue.instance_variable_set "@geojson", nil
118+
assert_equal old_coordinates, @issue.geojson["geometry"]["coordinates"]
119+
120+
new_coordinates = [old_coordinates[0].map{|c| [c[0] + 0.2, c[1]]}]
121+
@issue.update_attribute :geojson, polygon_geojson(new_coordinates)
122+
@issue.instance_variable_set "@geojson", nil
123+
assert_equal new_coordinates, @issue.geojson["geometry"]["coordinates"]
124+
125+
new_coordinates = [old_coordinates[0].map{|c| [c[0], c[1]]}]
126+
new_coordinates[0].delete_at(1)
127+
@issue.update_attribute :geojson, polygon_geojson(new_coordinates)
128+
@issue.instance_variable_set "@geojson", nil
129+
assert_equal new_coordinates, @issue.geojson["geometry"]["coordinates"]
80130
end
81131
end

0 commit comments

Comments
 (0)