]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/api/changesets_controller_test.rb
Merge remote-tracking branch 'upstream/pull/4889'
[rails.git] / test / controllers / api / changesets_controller_test.rb
index c8fed5cbcfeff39140c28173f94e9c0068a7fac1..be1033ea6f0300805655575f5c69eb4e45f5af7a 100644 (file)
@@ -51,11 +51,11 @@ module Api
       )
       assert_routing(
         { :path => "/api/0.6/changesets", :method => :get },
-        { :controller => "api/changesets", :action => "query" }
+        { :controller => "api/changesets", :action => "index" }
       )
       assert_routing(
         { :path => "/api/0.6/changesets.json", :method => :get },
-        { :controller => "api/changesets", :action => "query", :format => "json" }
+        { :controller => "api/changesets", :action => "index", :format => "json" }
       )
     end
 
@@ -281,11 +281,11 @@ module Api
       assert_single_changeset_json changeset, js
       assert_equal 3, js["changeset"]["comments"].count
       assert_equal comment0.id, js["changeset"]["comments"][0]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][0]["visible"]
+      assert js["changeset"]["comments"][0]["visible"]
       assert_equal comment1.id, js["changeset"]["comments"][1]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][1]["visible"]
+      assert js["changeset"]["comments"][1]["visible"]
       assert_equal comment2.id, js["changeset"]["comments"][2]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][2]["visible"]
+      assert js["changeset"]["comments"][2]["visible"]
 
       # one hidden comment not included because not asked for
       comment1.update(:visible => false)
@@ -300,9 +300,9 @@ module Api
       assert_single_changeset_json changeset, js
       assert_equal 2, js["changeset"]["comments"].count
       assert_equal comment0.id, js["changeset"]["comments"][0]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][0]["visible"]
+      assert js["changeset"]["comments"][0]["visible"]
       assert_equal comment2.id, js["changeset"]["comments"][1]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][1]["visible"]
+      assert js["changeset"]["comments"][1]["visible"]
 
       # one hidden comment not included because no permissions
       get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true, :show_hidden_comments => true }
@@ -315,10 +315,10 @@ module Api
       assert_single_changeset_json changeset, js
       assert_equal 2, js["changeset"]["comments"].count
       assert_equal comment0.id, js["changeset"]["comments"][0]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][0]["visible"]
+      assert js["changeset"]["comments"][0]["visible"]
       # maybe will show an empty comment element with visible=false in the future
       assert_equal comment2.id, js["changeset"]["comments"][1]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][1]["visible"]
+      assert js["changeset"]["comments"][1]["visible"]
 
       # one hidden comment shown to moderators
       moderator_user = create(:moderator_user)
@@ -334,11 +334,11 @@ module Api
       assert_single_changeset_json changeset, js
       assert_equal 3, js["changeset"]["comments"].count
       assert_equal comment0.id, js["changeset"]["comments"][0]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][0]["visible"]
+      assert js["changeset"]["comments"][0]["visible"]
       assert_equal comment1.id, js["changeset"]["comments"][1]["id"]
-      assert_operator false, :==, js["changeset"]["comments"][1]["visible"]
+      assert_not js["changeset"]["comments"][1]["visible"]
       assert_equal comment2.id, js["changeset"]["comments"][2]["id"]
-      assert_operator true, :==, js["changeset"]["comments"][2]["visible"]
+      assert js["changeset"]["comments"][2]["visible"]
     end
 
     def test_show_tag_and_discussion_json
@@ -1995,6 +1995,40 @@ module Api
       end
     end
 
+    test "sorts downloaded elements by timestamp" do
+      changeset = create(:changeset)
+      node1 = create(:old_node, :version => 2, :timestamp => "2020-02-01", :changeset => changeset)
+      node0 = create(:old_node, :version => 2, :timestamp => "2020-01-01", :changeset => changeset)
+
+      get changeset_download_path(changeset)
+      assert_response :success
+      assert_dom "modify", :count => 2 do |modify|
+        assert_dom modify[0], ">node", :count => 1 do |node|
+          assert_dom node, ">@id", node0.node_id.to_s
+        end
+        assert_dom modify[1], ">node", :count => 1 do |node|
+          assert_dom node, ">@id", node1.node_id.to_s
+        end
+      end
+    end
+
+    test "sorts downloaded elements by version" do
+      changeset = create(:changeset)
+      node1 = create(:old_node, :version => 3, :timestamp => "2020-01-01", :changeset => changeset)
+      node0 = create(:old_node, :version => 2, :timestamp => "2020-01-01", :changeset => changeset)
+
+      get changeset_download_path(changeset)
+      assert_response :success
+      assert_dom "modify", :count => 2 do |modify|
+        assert_dom modify[0], ">node", :count => 1 do |node|
+          assert_dom node, ">@id", node0.node_id.to_s
+        end
+        assert_dom modify[1], ">node", :count => 1 do |node|
+          assert_dom node, ">@id", node1.node_id.to_s
+        end
+      end
+    end
+
     ##
     # check that the bounding box of a changeset gets updated correctly
     # FIXME: This should really be moded to a integration test due to the with_controller
@@ -2402,7 +2436,7 @@ module Api
         assert_response :success, "can't create a new node"
         node_id = @response.body.to_i
 
-        get api_node_path(:id => node_id)
+        get api_node_path(node_id)
         assert_response :success, "can't read back new node"
         node_doc = XML::Parser.string(@response.body).parse
         node_xml = node_doc.find("//osm/node").first
@@ -2413,7 +2447,7 @@ module Api
           node_xml["lon"] = rand.to_s
           node_xml["version"] = (i + 1).to_s
 
-          put api_node_path(:id => node_id), :params => node_doc.to_s, :headers => auth_header
+          put api_node_path(node_id), :params => node_doc.to_s, :headers => auth_header
           assert_response :success, "attempt #{i} should have succeeded"
         end
 
@@ -2422,7 +2456,7 @@ module Api
         node_xml["lon"] = rand.to_s
         node_xml["version"] = offset.to_s
 
-        put api_node_path(:id => node_id), :params => node_doc.to_s, :headers => auth_header
+        put api_node_path(node_id), :params => node_doc.to_s, :headers => auth_header
         assert_response :conflict, "final attempt should have failed"
       end
 
@@ -2572,10 +2606,10 @@ module Api
       assert_equal changeset.id, js["changeset"]["id"]
       assert_equal changeset.created_at.xmlschema, js["changeset"]["created_at"]
       if changeset.open?
-        assert_operator true, :==, js["changeset"]["open"]
+        assert js["changeset"]["open"]
         assert_nil js["changeset"]["closed_at"]
       else
-        assert_operator false, :==, js["changeset"]["open"]
+        assert_not js["changeset"]["open"]
         assert_equal changeset.closed_at.xmlschema, js["changeset"]["closed_at"]
       end
     end