From: Andy Allan Date: Wed, 5 Feb 2025 17:13:47 +0000 (+0000) Subject: Merge pull request #5591 from AntonKhorev/api-element-resources--index-paths X-Git-Tag: live~50 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/7cf9bf0e553a141acab2afea53842f97eddd0a40?hp=-c Merge pull request #5591 from AntonKhorev/api-element-resources--index-paths API element resources - index paths --- 7cf9bf0e553a141acab2afea53842f97eddd0a40 diff --combined test/controllers/api/changesets_controller_test.rb index 5c0e7c9c2,d9afb94a2..39b1f3cf8 --- a/test/controllers/api/changesets_controller_test.rb +++ b/test/controllers/api/changesets_controller_test.rb @@@ -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 @@@ -176,20 -174,16 +176,20 @@@ 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) @@@ -197,34 -191,28 +197,34 @@@ 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) @@@ -233,19 -221,16 +233,19 @@@ :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 @@@ -2130,7 -2115,7 +2130,7 @@@ # add a single node to it with_controller(NodesController.new) do xml = "" - 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 @@@ -2145,7 -2130,7 +2145,7 @@@ # add another node to it with_controller(NodesController.new) do xml = "" - 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 @@@ -2515,7 -2500,7 +2515,7 @@@ with_controller(NodesController.new) do # create a new node xml = "" - 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 @@@ -2672,18 -2657,16 +2672,18 @@@ ## # 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