]> git.openstreetmap.org Git - rails.git/commitdiff
Merge pull request #5591 from AntonKhorev/api-element-resources--index-paths
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 5 Feb 2025 17:13:47 +0000 (17:13 +0000)
committerGitHub <noreply@github.com>
Wed, 5 Feb 2025 17:13:47 +0000 (17:13 +0000)
API element resources - index paths

1  2 
test/controllers/api/changesets_controller_test.rb

index 5c0e7c9c268dc82cb5ca2a3533a5c7dc21186e96,d9afb94a21236216d2abdabdb6105aa7142fdcfc..39b1f3cf81d26773d27c3a9d4dd8183b615bb8a9
@@@ -153,19 -153,17 +153,19 @@@ module Ap
        get changeset_show_path(changeset)
        assert_response :success, "cannot get first changeset"
  
 -      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 -      assert_single_changeset changeset
 -      assert_select "osm>changeset>discussion", 0
 +      assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 +      assert_single_changeset changeset do
 +        assert_dom "> discussion", 0
 +      end
  
        get changeset_show_path(changeset), :params => { :include_discussion => true }
        assert_response :success, "cannot get first changeset with comments"
  
 -      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 -      assert_single_changeset changeset
 -      assert_select "osm>changeset>discussion", 1
 -      assert_select "osm>changeset>discussion>comment", 0
 +      assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 +      assert_single_changeset changeset do
 +        assert_dom "> discussion", 1
 +        assert_dom "> discussion > comment", 0
 +      end
      end
  
      def test_show_comments
        get changeset_show_path(changeset), :params => { :include_discussion => true }
        assert_response :success, "cannot get closed changeset with comments"
  
 -      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 -      assert_single_changeset changeset
 -      assert_select "osm>changeset>discussion", 1
 -      assert_select "osm>changeset>discussion>comment", 3
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@id", comment1.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@visible", "true"
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@id", comment2.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@visible", "true"
 -      assert_select "osm>changeset>discussion>comment:nth-child(3)>@id", comment3.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(3)>@visible", "true"
 +      assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1 do
 +        assert_single_changeset changeset do
 +          assert_dom "> discussion", 1 do
 +            assert_dom "> comment", 3 do |dom_comments|
 +              assert_dom dom_comments[0], "> @id", comment1.id.to_s
 +              assert_dom dom_comments[0], "> @visible", "true"
 +              assert_dom dom_comments[1], "> @id", comment2.id.to_s
 +              assert_dom dom_comments[1], "> @visible", "true"
 +              assert_dom dom_comments[2], "> @id", comment3.id.to_s
 +              assert_dom dom_comments[2], "> @visible", "true"
 +            end
 +          end
 +        end
 +      end
  
        # one hidden comment not included because not asked for
        comment2.update(:visible => false)
        get changeset_show_path(changeset), :params => { :include_discussion => true }
        assert_response :success, "cannot get closed changeset with comments"
  
 -      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 -      assert_single_changeset changeset
 -      assert_select "osm>changeset>discussion", 1
 -      assert_select "osm>changeset>discussion>comment", 2
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@id", comment1.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@visible", "true"
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@id", comment3.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@visible", "true"
 +      assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 +      assert_single_changeset changeset do
 +        assert_dom "> discussion", 1 do
 +          assert_dom "> comment", 2 do |dom_comments|
 +            assert_dom dom_comments[0], "> @id", comment1.id.to_s
 +            assert_dom dom_comments[0], "> @visible", "true"
 +            assert_dom dom_comments[1], "> @id", comment3.id.to_s
 +            assert_dom dom_comments[1], "> @visible", "true"
 +          end
 +        end
 +      end
  
        # one hidden comment not included because no permissions
        get changeset_show_path(changeset), :params => { :include_discussion => true, :show_hidden_comments => true }
        assert_response :success, "cannot get closed changeset with comments"
  
 -      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 -      assert_single_changeset changeset
 -      assert_select "osm>changeset>discussion", 1
 -      assert_select "osm>changeset>discussion>comment", 2
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@id", comment1.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@visible", "true"
 -      # maybe will show an empty comment element with visible=false in the future
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@id", comment3.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@visible", "true"
 +      assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 +      assert_single_changeset changeset do
 +        assert_dom "> discussion", 1 do
 +          assert_dom "> comment", 2 do |dom_comments|
 +            assert_dom dom_comments[0], "> @id", comment1.id.to_s
 +            assert_dom dom_comments[0], "> @visible", "true"
 +            # maybe will show an empty comment element with visible=false in the future
 +            assert_dom dom_comments[1], "> @id", comment3.id.to_s
 +            assert_dom dom_comments[1], "> @visible", "true"
 +          end
 +        end
 +      end
  
        # one hidden comment shown to moderators
        moderator_user = create(:moderator_user)
                                            :headers => auth_header
        assert_response :success, "cannot get closed changeset with comments"
  
 -      assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 -      assert_single_changeset changeset
 -      assert_select "osm>changeset>discussion", 1
 -      assert_select "osm>changeset>discussion>comment", 3
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@id", comment1.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(1)>@visible", "true"
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@id", comment2.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(2)>@visible", "false"
 -      assert_select "osm>changeset>discussion>comment:nth-child(3)>@id", comment3.id.to_s
 -      assert_select "osm>changeset>discussion>comment:nth-child(3)>@visible", "true"
 +      assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
 +      assert_single_changeset changeset do
 +        assert_dom "> discussion", 1 do
 +          assert_dom "> comment", 3 do |dom_comments|
 +            assert_dom dom_comments[0], "> @id", comment1.id.to_s
 +            assert_dom dom_comments[0], "> @visible", "true"
 +            assert_dom dom_comments[1], "> @id", comment2.id.to_s
 +            assert_dom dom_comments[1], "> @visible", "false"
 +            assert_dom dom_comments[2], "> @id", comment3.id.to_s
 +            assert_dom dom_comments[2], "> @visible", "true"
 +          end
 +        end
 +      end
      end
  
      def test_show_json
        # add a single node to it
        with_controller(NodesController.new) do
          xml = "<osm><node lon='0.1' lat='0.2' changeset='#{changeset_id}'/></osm>"
-         put node_create_path, :params => xml, :headers => auth_header
+         post api_nodes_path, :params => xml, :headers => auth_header
          assert_response :success, "Couldn't create node."
        end
  
        # add another node to it
        with_controller(NodesController.new) do
          xml = "<osm><node lon='0.2' lat='0.1' changeset='#{changeset_id}'/></osm>"
-         put node_create_path, :params => xml, :headers => auth_header
+         post api_nodes_path, :params => xml, :headers => auth_header
          assert_response :success, "Couldn't create second node."
        end
  
        with_controller(NodesController.new) do
          # create a new node
          xml = "<osm><node changeset='#{cs_id}' lat='0.0' lon='0.0'/></osm>"
-         put node_create_path, :params => xml, :headers => auth_header
+         post api_nodes_path, :params => xml, :headers => auth_header
          assert_response :success, "can't create a new node"
          node_id = @response.body.to_i
  
  
      ##
      # check that the output consists of one specific changeset
 -    def assert_single_changeset(changeset)
 -      assert_select "osm>changeset", 1
 -      assert_select "osm>changeset>@id", changeset.id.to_s
 -      assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
 -      if changeset.open?
 -        assert_select "osm>changeset>@open", "true"
 -        assert_select "osm>changeset>@closed_at", 0
 -      else
 -        assert_select "osm>changeset>@open", "false"
 -        assert_select "osm>changeset>@closed_at", changeset.closed_at.xmlschema
 +    def assert_single_changeset(changeset, &)
 +      assert_dom "> changeset", 1 do
 +        assert_dom "> @id", changeset.id.to_s
 +        assert_dom "> @created_at", changeset.created_at.xmlschema
 +        if changeset.open?
 +          assert_dom "> @open", "true"
 +          assert_dom "> @closed_at", 0
 +        else
 +          assert_dom "> @open", "false"
 +          assert_dom "> @closed_at", changeset.closed_at.xmlschema
 +        end
 +        yield if block_given?
        end
      end