From 355e5e29883c16ec1c654d17ab0c27b327b93060 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 12 Aug 2025 18:56:49 +0100 Subject: [PATCH] Avoid using assert_select with a block and a count of zero https://github.com/rails/rails-dom-testing/pull/116 --- .../controllers/changesets_controller_test.rb | 56 +++++++++++-------- .../traces/feeds_controller_test.rb | 24 ++++---- 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/test/controllers/changesets_controller_test.rb b/test/controllers/changesets_controller_test.rb index d995706eb..f2f3ab665 100644 --- a/test/controllers/changesets_controller_test.rb +++ b/test/controllers/changesets_controller_test.rb @@ -567,11 +567,15 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest ## # check the result of a index def check_index_result(changesets) - assert_select "ol", :count => [changesets.size, 1].min do - assert_select "li", :count => changesets.size - - changesets.each do |changeset| - assert_select "li#changeset_#{changeset.id}", :count => 1 + if changesets.empty? + assert_select "ol", :count => 0 + else + assert_select "ol", :count => 1 do + assert_select "li", :count => changesets.size + + changesets.each do |changeset| + assert_select "li#changeset_#{changeset.id}", :count => 1 + end end end end @@ -581,26 +585,30 @@ class ChangesetsControllerTest < ActionDispatch::IntegrationTest def check_feed_result(changesets) assert_operator changesets.size, :<=, 20 - assert_select "feed", :count => [changesets.size, 1].min do - assert_select "> title", :count => 1, :text => /^Changesets/ - assert_select "> entry", :count => changesets.size do |entries| - entries.zip(changesets) do |entry, changeset| - assert_select entry, "> id", :text => changeset_url(:id => changeset.id) - - changeset_comment = changeset.tags["comment"] - if changeset_comment - assert_select entry, "> title", :count => 1, :text => "Changeset #{changeset.id} - #{changeset_comment}" - else - assert_select entry, "> title", :count => 1, :text => "Changeset #{changeset.id}" - end - - assert_select entry, "> content > xhtml|div > xhtml|table" do - if changeset.tags.empty? - assert_select "> xhtml|tr > xhtml|td > xhtml|table", :count => 0 + if changesets.empty? + assert_select "feed", :count => 0 + else + assert_select "feed", :count => 1 do + assert_select "> title", :count => 1, :text => /^Changesets/ + assert_select "> entry", :count => changesets.size do |entries| + entries.zip(changesets) do |entry, changeset| + assert_select entry, "> id", :text => changeset_url(:id => changeset.id) + + changeset_comment = changeset.tags["comment"] + if changeset_comment + assert_select entry, "> title", :count => 1, :text => "Changeset #{changeset.id} - #{changeset_comment}" else - assert_select "> xhtml|tr > xhtml|td > xhtml|table", :count => 1 do - changeset.tags.each_key do |key| - assert_select "> xhtml|tr > xhtml|td", :text => /^#{key} = / + assert_select entry, "> title", :count => 1, :text => "Changeset #{changeset.id}" + end + + assert_select entry, "> content > xhtml|div > xhtml|table" do + if changeset.tags.empty? + assert_select "> xhtml|tr > xhtml|td > xhtml|table", :count => 0 + else + assert_select "> xhtml|tr > xhtml|td > xhtml|table", :count => 1 do + changeset.tags.each_key do |key| + assert_select "> xhtml|tr > xhtml|td", :text => /^#{key} = / + end end end end diff --git a/test/controllers/traces/feeds_controller_test.rb b/test/controllers/traces/feeds_controller_test.rb index b0642bf5e..c5b7f4660 100644 --- a/test/controllers/traces/feeds_controller_test.rb +++ b/test/controllers/traces/feeds_controller_test.rb @@ -83,24 +83,24 @@ module Traces assert_template "traces/feeds/show" assert_equal "application/rss+xml", @response.media_type assert_select "rss", :count => 1 do - assert_select "channel", :count => 1 do + assert_select "channel", :count => 1 do |channel| assert_select "title" assert_select "description" assert_select "link" assert_select "image" - assert_select "item", :count => traces.length do |items| - traces.zip(items).each do |trace, item| - assert_select item, "title", trace.name - assert_select item, "link", "http://www.example.com/user/#{ERB::Util.u(trace.user.display_name)}/traces/#{trace.id}" - assert_select item, "guid", "http://www.example.com/user/#{ERB::Util.u(trace.user.display_name)}/traces/#{trace.id}" - assert_select item, "description" do - assert_dom_encoded do - assert_select "img[src='#{trace_icon_url trace.user, trace}']" - end + assert_select "item", :count => traces.length + + traces.zip(channel.css("item")).each do |trace, item| + assert_select item, "title", trace.name + assert_select item, "link", "http://www.example.com/user/#{ERB::Util.u(trace.user.display_name)}/traces/#{trace.id}" + assert_select item, "guid", "http://www.example.com/user/#{ERB::Util.u(trace.user.display_name)}/traces/#{trace.id}" + assert_select item, "description" do + assert_dom_encoded do + assert_select "img[src='#{trace_icon_url trace.user, trace}']" end - # assert_select item, "dc:creator", trace.user.display_name - assert_select item, "pubDate", trace.timestamp.rfc822 end + # assert_select item, "dc:creator", trace.user.display_name + assert_select item, "pubDate", trace.timestamp.rfc822 end end end -- 2.39.5