]> git.openstreetmap.org Git - rails.git/commitdiff
Order of comments in changeset comments feeds
authornertc <davidtsiklauri7@gmail.com>
Fri, 5 Jul 2024 15:00:15 +0000 (19:00 +0400)
committernertc <davidtsiklauri7@gmail.com>
Fri, 5 Jul 2024 15:00:15 +0000 (19:00 +0400)
app/controllers/changeset_comments_controller.rb
test/controllers/changeset_comments_controller_test.rb

index 0b5f6059a62ea425acf568206aab76d246d0e940..637ac7be635a2bf87f7fed01e12187babffdf0a5 100644 (file)
@@ -18,7 +18,7 @@ class ChangesetCommentsController < ApplicationController
       changeset = Changeset.find(id)
 
       # Return comments for this changeset only
-      @comments = changeset.comments.includes(:author, :changeset).limit(comments_limit)
+      @comments = changeset.comments.includes(:author, :changeset).reverse_order.limit(comments_limit)
     else
       # Return comments
       @comments = ChangesetComment.includes(:author, :changeset).where(:visible => true).order("created_at DESC").limit(comments_limit).preload(:changeset)
index b18698744439afb561c9ebf76af028817099378e..5d0f4b51f61792b9c88d025975fa50b64b712cb9 100644 (file)
@@ -46,6 +46,23 @@ class ChangesetCommentsControllerTest < ActionDispatch::IntegrationTest
         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
 
   ##