]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/changeset_controller_test.rb
Refactor the assert_changeset helper to take an array of changesets, instead of ids.
[rails.git] / test / controllers / changeset_controller_test.rb
index 50a66744acf0e6c287e1fd09b93f134dd1428b2b..3e081a079892de23a7596a4454fdb7586a9f0b3b 100644 (file)
@@ -2,8 +2,6 @@ require "test_helper"
 require "changeset_controller"
 
 class ChangesetControllerTest < ActionController::TestCase
-  api_fixtures
-
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -424,6 +422,9 @@ EOF
   def test_upload_create_valid
     user = create(:user)
     changeset = create(:changeset, :user => user)
+    node = create(:node)
+    way = create(:way_with_nodes, :nodes_count => 2)
+    relation = create(:relation)
 
     basic_authorization user.email, "test"
 
@@ -436,14 +437,14 @@ EOF
    <tag k='baz' v='bat'/>
   </node>
   <way id='-1' changeset='#{changeset.id}'>
-   <nd ref='3'/>
+   <nd ref='#{node.id}'/>
   </way>
  </create>
  <create>
   <relation id='-1' changeset='#{changeset.id}'>
-   <member type='way' role='some' ref='3'/>
-   <member type='node' role='some' ref='5'/>
-   <member type='relation' role='some' ref='3'/>
+   <member type='way' role='some' ref='#{way.id}'/>
+   <member type='node' role='some' ref='#{node.id}'/>
+   <member type='relation' role='some' ref='#{relation.id}'/>
   </relation>
  </create>
 </osmChange>
@@ -870,6 +871,7 @@ EOF
   ##
   # upload multiple versions of the same element in the same diff.
   def test_upload_multiple_valid
+    node = create(:node)
     changeset = create(:changeset)
     basic_authorization changeset.user.email, "test"
 
@@ -879,14 +881,14 @@ EOF
     diff = <<EOF
 <osmChange>
  <modify>
-  <node id='1' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
-  <node id='1' lon='1' lat='0' changeset='#{changeset.id}' version='2'/>
-  <node id='1' lon='1' lat='1' changeset='#{changeset.id}' version='3'/>
-  <node id='1' lon='1' lat='2' changeset='#{changeset.id}' version='4'/>
-  <node id='1' lon='2' lat='2' changeset='#{changeset.id}' version='5'/>
-  <node id='1' lon='3' lat='2' changeset='#{changeset.id}' version='6'/>
-  <node id='1' lon='3' lat='3' changeset='#{changeset.id}' version='7'/>
-  <node id='1' lon='9' lat='9' changeset='#{changeset.id}' version='8'/>
+  <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
+  <node id='#{node.id}' lon='1' lat='0' changeset='#{changeset.id}' version='2'/>
+  <node id='#{node.id}' lon='1' lat='1' changeset='#{changeset.id}' version='3'/>
+  <node id='#{node.id}' lon='1' lat='2' changeset='#{changeset.id}' version='4'/>
+  <node id='#{node.id}' lon='2' lat='2' changeset='#{changeset.id}' version='5'/>
+  <node id='#{node.id}' lon='3' lat='2' changeset='#{changeset.id}' version='6'/>
+  <node id='#{node.id}' lon='3' lat='3' changeset='#{changeset.id}' version='7'/>
+  <node id='#{node.id}' lon='9' lat='9' changeset='#{changeset.id}' version='8'/>
  </modify>
 </osmChange>
 EOF
@@ -907,6 +909,7 @@ EOF
   # upload multiple versions of the same element in the same diff, but
   # keep the version numbers the same.
   def test_upload_multiple_duplicate
+    node = create(:node)
     changeset = create(:changeset)
 
     basic_authorization changeset.user.email, "test"
@@ -914,8 +917,8 @@ EOF
     diff = <<EOF
 <osmChange>
  <modify>
-  <node id='1' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
-  <node id='1' lon='1' lat='1' changeset='#{changeset.id}' version='1'/>
+  <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset.id}' version='1'/>
+  <node id='#{node.id}' lon='1' lat='1' changeset='#{changeset.id}' version='1'/>
  </modify>
 </osmChange>
 EOF
@@ -1315,6 +1318,8 @@ EOF
   # when we make some simple changes we get the same changes back from the
   # diff download.
   def test_diff_download_simple
+    node = create(:node)
+
     ## First try with a non-public user, which should get a forbidden
     basic_authorization(create(:user, :data_public => false).email, "test")
 
@@ -1340,14 +1345,14 @@ EOF
     diff = <<EOF
 <osmChange>
  <modify>
-  <node id='1' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
-  <node id='1' lon='1' lat='0' changeset='#{changeset_id}' version='2'/>
-  <node id='1' lon='1' lat='1' changeset='#{changeset_id}' version='3'/>
-  <node id='1' lon='1' lat='2' changeset='#{changeset_id}' version='4'/>
-  <node id='1' lon='2' lat='2' changeset='#{changeset_id}' version='5'/>
-  <node id='1' lon='3' lat='2' changeset='#{changeset_id}' version='6'/>
-  <node id='1' lon='3' lat='3' changeset='#{changeset_id}' version='7'/>
-  <node id='1' lon='9' lat='9' changeset='#{changeset_id}' version='8'/>
+  <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
+  <node id='#{node.id}' lon='1' lat='0' changeset='#{changeset_id}' version='2'/>
+  <node id='#{node.id}' lon='1' lat='1' changeset='#{changeset_id}' version='3'/>
+  <node id='#{node.id}' lon='1' lat='2' changeset='#{changeset_id}' version='4'/>
+  <node id='#{node.id}' lon='2' lat='2' changeset='#{changeset_id}' version='5'/>
+  <node id='#{node.id}' lon='3' lat='2' changeset='#{changeset_id}' version='6'/>
+  <node id='#{node.id}' lon='3' lat='3' changeset='#{changeset_id}' version='7'/>
+  <node id='#{node.id}' lon='9' lat='9' changeset='#{changeset_id}' version='8'/>
  </modify>
 </osmChange>
 EOF
@@ -1431,6 +1436,9 @@ OSMFILE
   # when we make some complex changes we get the same changes back from the
   # diff download.
   def test_diff_download_complex
+    node = create(:node)
+    node2 = create(:node)
+    way = create(:way)
     basic_authorization(create(:user).email, "test")
 
     # create a temporary changeset
@@ -1445,7 +1453,7 @@ OSMFILE
     diff = <<EOF
 <osmChange>
  <delete>
-  <node id='1' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
+  <node id='#{node.id}' lon='0' lat='0' changeset='#{changeset_id}' version='1'/>
  </delete>
  <create>
   <node id='-1' lon='9' lat='9' changeset='#{changeset_id}' version='0'/>
@@ -1453,9 +1461,9 @@ OSMFILE
   <node id='-3' lon='7' lat='9' changeset='#{changeset_id}' version='0'/>
  </create>
  <modify>
-  <node id='3' lon='20' lat='15' changeset='#{changeset_id}' version='1'/>
-  <way id='1' changeset='#{changeset_id}' version='1'>
-   <nd ref='3'/>
+  <node id='#{node2.id}' lon='20' lat='15' changeset='#{changeset_id}' version='1'/>
+  <way id='#{way.id}' changeset='#{changeset_id}' version='1'>
+   <nd ref='#{node2.id}'/>
    <nd ref='-1'/>
    <nd ref='-2'/>
    <nd ref='-3'/>
@@ -1630,14 +1638,16 @@ EOF
     user = create(:user)
     changeset = create(:changeset, :user => user)
     closed_changeset = create(:changeset, :closed, :user => user, :created_at => Time.utc(2008, 1, 1, 0, 0, 0), :closed_at => Time.utc(2008, 1, 2, 0, 0, 0))
+    changeset2 = create(:changeset, :min_lat => 5 * GeoRecord::SCALE, :min_lon => 5 * GeoRecord::SCALE, :max_lat => 15 * GeoRecord::SCALE, :max_lon => 15 * GeoRecord::SCALE)
+    changeset3 = create(:changeset, :min_lat => 4.5 * GeoRecord::SCALE, :min_lon => 4.5 * GeoRecord::SCALE, :max_lat => 5 * GeoRecord::SCALE, :max_lon => 5 * GeoRecord::SCALE)
 
     get :query, :bbox => "-10,-10, 10, 10"
     assert_response :success, "can't get changesets in bbox"
-    assert_changesets [1, 4, 6]
+    assert_changesets [changeset2, changeset3]
 
     get :query, :bbox => "4.5,4.5,4.6,4.6"
     assert_response :success, "can't get changesets in bbox"
-    assert_changesets [1]
+    assert_changesets [changeset3]
 
     # not found when looking for changesets of non-existing users
     get :query, :user => User.maximum(:id) + 1
@@ -1655,11 +1665,11 @@ EOF
     basic_authorization private_user.email, "test"
     get :query, :user => private_user.id
     assert_response :success, "can't get changesets by user ID"
-    assert_changesets [private_user_changeset.id, private_user_closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset]
 
     get :query, :display_name => private_user.display_name
     assert_response :success, "can't get changesets by user name"
-    assert_changesets [private_user_changeset.id, private_user_closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset]
 
     # check that the correct error is given when we provide both UID and name
     get :query, :user => private_user.id, :display_name => private_user.display_name
@@ -1667,39 +1677,39 @@ EOF
 
     get :query, :user => private_user.id, :open => true
     assert_response :success, "can't get changesets by user and open"
-    assert_changesets [private_user_changeset.id]
+    assert_changesets [private_user_changeset]
 
     get :query, :time => "2007-12-31"
     assert_response :success, "can't get changesets by time-since"
-    assert_changesets [1, 2, 4, 5, 6, private_user_changeset.id, private_user_closed_changeset.id, changeset.id, closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3]
 
     get :query, :time => "2008-01-01T12:34Z"
     assert_response :success, "can't get changesets by time-since with hour"
-    assert_changesets [1, 2, 4, 5, 6, private_user_changeset.id, private_user_closed_changeset.id, changeset.id, closed_changeset.id]
+    assert_changesets [private_user_changeset, private_user_closed_changeset, changeset, closed_changeset, changeset2, changeset3]
 
     get :query, :time => "2007-12-31T23:59Z,2008-01-02T00:01Z"
     assert_response :success, "can't get changesets by time-range"
-    assert_changesets [1, 5, 6, closed_changeset.id]
+    assert_changesets [closed_changeset]
 
     get :query, :open => "true"
     assert_response :success, "can't get changesets by open-ness"
-    assert_changesets [1, 2, 4, private_user_changeset.id, changeset.id]
+    assert_changesets [private_user_changeset, changeset, changeset2, changeset3]
 
     get :query, :closed => "true"
     assert_response :success, "can't get changesets by closed-ness"
-    assert_changesets [3, 5, 6, 7, 8, 9, private_user_closed_changeset.id, closed_changeset.id]
+    assert_changesets [private_user_closed_changeset, closed_changeset]
 
     get :query, :closed => "true", :user => private_user.id
     assert_response :success, "can't get changesets by closed-ness and user"
-    assert_changesets [private_user_closed_changeset.id]
+    assert_changesets [private_user_closed_changeset]
 
     get :query, :closed => "true", :user => user.id
     assert_response :success, "can't get changesets by closed-ness and user"
-    assert_changesets [closed_changeset.id]
+    assert_changesets [closed_changeset]
 
     get :query, :changesets => "#{private_user_changeset.id},#{changeset.id},#{closed_changeset.id}"
     assert_response :success, "can't get changesets by id (as comma-separated string)"
-    assert_changesets [private_user_changeset.id, changeset.id, closed_changeset.id]
+    assert_changesets [private_user_changeset, changeset, closed_changeset]
 
     get :query, :changesets => ""
     assert_response :bad_request, "should be a bad request since changesets is empty"
@@ -2429,10 +2439,10 @@ EOF
   ##
   # boilerplate for checking that certain changesets exist in the
   # output.
-  def assert_changesets(ids)
-    assert_select "osm>changeset", ids.size
-    ids.each do |id|
-      assert_select "osm>changeset[id='#{id}']", 1
+  def assert_changesets(changesets)
+    assert_select "osm>changeset", changesets.size
+    changesets.each do |changeset|
+      assert_select "osm>changeset[id='#{changeset.id}']", 1
     end
   end