- assert_select "osm[version='#{Settings.api_version}'][generator='#{Settings.generator}']", 1
- assert_select "osm>changeset[id='#{changeset.id}']", 1
- assert_select "osm>changeset>@open", "false"
- assert_select "osm>changeset>@created_at", changeset.created_at.xmlschema
- assert_select "osm>changeset>@closed_at", changeset.closed_at.xmlschema
- 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(2)>@id", comment2.id.to_s
- assert_select "osm>changeset>discussion>comment:nth-child(3)>@id", comment3.id.to_s
+ 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_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_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)
+ auth_header = bearer_authorization_header moderator_user
+ get changeset_show_path(changeset), :params => { :include_discussion => true, :show_hidden_comments => true },
+ :headers => auth_header
+ assert_response :success, "cannot get closed changeset with comments"
+
+ 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