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)
+ changeset.reload
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_tags
+ changeset = create(:changeset, :closed)
+ create(:changeset_tag, :changeset => changeset, :k => "created_by", :v => "JOSM/1.5 (18364)")
+ create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset comment")
+
+ get changeset_show_path(changeset)
+
+ assert_response :success
+ assert_dom "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
+ assert_single_changeset changeset do
+ assert_dom "> tag", 2
+ assert_dom "> tag[k='created_by'][v='JOSM/1.5 (18364)']", 1
+ assert_dom "> tag[k='comment'][v='changeset comment']", 1
+ end
end
def test_show_json
# one hidden comment not included because not asked for
comment1.update(:visible => false)
+ changeset.reload
get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true }
assert_response :success, "cannot get closed changeset with comments"
assert js["changeset"]["comments"][2]["visible"]
end
- def test_show_tag_and_discussion_json
+ def test_show_tags_json
changeset = create(:changeset, :closed)
+ create(:changeset_tag, :changeset => changeset, :k => "created_by", :v => "JOSM/1.5 (18364)")
+ create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset comment")
- tag1 = ChangesetTag.new
- tag1.changeset_id = changeset.id
- tag1.k = "created_by"
- tag1.v = "JOSM/1.5 (18364)"
-
- tag2 = ChangesetTag.new
- tag2.changeset_id = changeset.id
- tag2.k = "comment"
- tag2.v = "changeset comment"
-
- changeset.changeset_tags = [tag1, tag2]
-
- create_list(:changeset_comment, 3, :changeset_id => changeset.id)
-
- get changeset_show_path(changeset), :params => { :format => "json", :include_discussion => true }
- assert_response :success, "cannot get closed changeset with comments"
+ get changeset_show_path(changeset, :format => "json")
+ assert_response :success
js = ActiveSupport::JSON.decode(@response.body)
-
assert_not_nil js
assert_equal Settings.api_version, js["version"]
assert_equal Settings.generator, js["generator"]
assert_single_changeset_json changeset, js
assert_equal 2, js["changeset"]["tags"].count
- assert_equal 3, js["changeset"]["comments"].count
- assert_equal 3, js["changeset"]["comments_count"]
- assert_equal 0, js["changeset"]["changes_count"]
- assert_not_nil js["changeset"]["comments"][0]["uid"]
- assert_not_nil js["changeset"]["comments"][0]["user"]
- assert_not_nil js["changeset"]["comments"][0]["text"]
+ assert_equal "JOSM/1.5 (18364)", js["changeset"]["tags"]["created_by"]
+ assert_equal "changeset comment", js["changeset"]["tags"]["comment"]
end
def test_show_bbox_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
+ assert_dom "> @comments_count", changeset.comments.length.to_s
+ assert_dom "> @changes_count", changeset.num_changes.to_s
+ yield if block_given?
end
end
assert_not js["changeset"]["open"]
assert_equal changeset.closed_at.xmlschema, js["changeset"]["closed_at"]
end
+ assert_equal changeset.comments.length, js["changeset"]["comments_count"]
+ assert_equal changeset.num_changes, js["changeset"]["changes_count"]
end
##