]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/changeset_comments_controller_test.rb
Merge remote-tracking branch 'upstream/pull/4984'
[rails.git] / test / controllers / changeset_comments_controller_test.rb
index 2d13bd92bbbc614d1ecd6d9d267569d234c0167d..5d0f4b51f61792b9c88d025975fa50b64b712cb9 100644 (file)
@@ -1,6 +1,6 @@
 require "test_helper"
 
-class ChangesetCommentsControllerTest < ActionController::TestCase
+class ChangesetCommentsControllerTest < ActionDispatch::IntegrationTest
   ##
   # test all routes which lead to this controller
   def test_routes
@@ -20,41 +20,58 @@ class ChangesetCommentsControllerTest < ActionController::TestCase
     changeset = create(:changeset, :closed)
     create_list(:changeset_comment, 3, :changeset => changeset)
 
-    get :index, :params => { :format => "rss" }
+    get changesets_comments_feed_path(:format => "rss")
     assert_response :success
-    assert_equal "application/rss+xml", @response.content_type
+    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 :index, :params => { :format => "rss", :limit => 2 }
+    get changesets_comments_feed_path(:format => "rss", :limit => 2)
     assert_response :success
-    assert_equal "application/rss+xml", @response.content_type
+    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 :index, :params => { :id => changeset.id, :format => "rss" }
+    get changeset_comments_feed_path(:id => changeset.id, :format => "rss")
     assert_response :success
-    assert_equal "application/rss+xml", @response.content_type
+    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 :index, :params => { :format => "rss", :limit => 0 }
+    get changesets_comments_feed_path(:format => "rss", :limit => 0)
     assert_response :bad_request
 
-    get :index, :params => { :format => "rss", :limit => 100001 }
+    get changesets_comments_feed_path(:format => "rss", :limit => 100001)
     assert_response :bad_request
   end
 end