openstreetmap-website/test/controllers/changeset_comments_controller_test.rb

77 lines
2.5 KiB
Ruby

require "test_helper"
class ChangesetCommentsControllerTest < ActionDispatch::IntegrationTest
##
# test all routes which lead to this controller
def test_routes
assert_routing(
{ :path => "/changeset/1/comments/feed", :method => :get },
{ :controller => "changeset_comments", :action => "index", :id => "1", :format => "rss" }
)
assert_routing(
{ :path => "/history/comments/feed", :method => :get },
{ :controller => "changeset_comments", :action => "index", :format => "rss" }
)
end
##
# test comments feed
def test_feed
changeset = create(:changeset, :closed)
create_list(:changeset_comment, 3, :changeset => changeset)
get changesets_comments_feed_path(:format => "rss")
assert_response :success
assert_equal "application/rss+xml", @response.media_type
assert_select "rss", :count => 1 do
assert_select "channel", :count => 1 do
assert_select "item", :count => 3
end
end
get changesets_comments_feed_path(:format => "rss", :limit => 2)
assert_response :success
assert_equal "application/rss+xml", @response.media_type
assert_select "rss", :count => 1 do
assert_select "channel", :count => 1 do
assert_select "item", :count => 2
end
end
get changeset_comments_feed_path(:id => changeset.id, :format => "rss")
assert_response :success
assert_equal "application/rss+xml", @response.media_type
assert_select "rss", :count => 1 do
assert_select "channel", :count => 1 do
assert_select "item", :count => 3
end
end
# Rails::Dom::Testing.html_document_fragment.parse(icons)
# Gets comment Ids from HTML and checks that they are in descending order
last_comment_id = -1
assert_select "rss", :count => 1 do
assert_select "description", :count => 3 do |descriptions|
descriptions.children.each do |description|
changeset_dom = Rails::Dom::Testing.html_document_fragment.parse(description.content)
comment = changeset_dom.at_css(".changeset-comment-text")
next unless comment
id = comment.content.split[-1].to_i
assert_operator id, "<", last_comment_id if last_comment_id != -1
last_comment_id = id
end
end
end
end
##
# test comments feed
def test_feed_bad_limit
get changesets_comments_feed_path(:format => "rss", :limit => 0)
assert_response :bad_request
get changesets_comments_feed_path(:format => "rss", :limit => 100001)
assert_response :bad_request
end
end