From c83f1424d155bfac73a3fd1e971bf3d08a90a3c4 Mon Sep 17 00:00:00 2001 From: "Ben Sheldon [he/him]" <bensheldon@github.com> Date: Mon, 16 Dec 2024 13:17:46 -0800 Subject: [PATCH 1/5] Exploratory test cases for rails_view_render_literal --- test/test_rails_view_render_literal.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/test/test_rails_view_render_literal.rb b/test/test_rails_view_render_literal.rb index 7c081dd3..59cb6804 100644 --- a/test/test_rails_view_render_literal.rb +++ b/test/test_rails_view_render_literal.rb @@ -78,6 +78,30 @@ def test_render_component_instance_block_no_offense assert_equal 0, offenses.count end + def test_render_component_instance_inline_block_no_offense + offenses = erb_investigate cop, <<-ERB, "app/views/foo/index.html.erb" + <%= render Module::MyClass.new(title: "foo", bar: "baz") { "Content" } %> + ERB + + assert_equal 0, offenses.count + end + + def test_render_component_instance_data_object_no_offense + offenses = erb_investigate cop, <<-ERB, "app/views/foo/index.html.erb" + <%= render Module::MyClass.new(title: "foo", bar: "baz", data: { foo: "bar" }) %> + ERB + + assert_equal 0, offenses.count + end + + def test_render_component_instance_data_object_no_offense + offenses = erb_investigate cop, <<-ERB, "app/views/foo/index.html.erb" + <%= render Module::MyClass.new(title: "foo", bar: "baz", data: { foo: "bar" }) %> + ERB + + assert_equal 0, offenses.count + end + def test_render_component_collection_no_offense offenses = erb_investigate cop, <<-ERB, "app/views/foo/index.html.erb" <%= render MyClass.with_collection(title: "foo", bar: "baz") %> From b7e40e4a96d9aa4e2ca71d5a43bc897458618047 Mon Sep 17 00:00:00 2001 From: "Ben Sheldon [he/him]" <bensheldon@github.com> Date: Mon, 16 Dec 2024 13:23:24 -0800 Subject: [PATCH 2/5] Update render_literal_helpers.rb to allow for inline block content --- lib/rubocop/cop/github/render_literal_helpers.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubocop/cop/github/render_literal_helpers.rb b/lib/rubocop/cop/github/render_literal_helpers.rb index 29820b0e..ee1fad92 100644 --- a/lib/rubocop/cop/github/render_literal_helpers.rb +++ b/lib/rubocop/cop/github/render_literal_helpers.rb @@ -29,7 +29,7 @@ module RenderLiteralHelpers PATTERN def_node_matcher :render_view_component_instance_with_content?, <<-PATTERN - (send nil? {:render :render_to_string} (send (send _ :new ...) `:with_content ...)) + (send nil? {:render :render_to_string} (send (send _ :new ...) `:with_content ...) $...) PATTERN def_node_matcher :render_view_component_collection?, <<-PATTERN From 11d57663260ee759d7688ff354141d9fb612d109 Mon Sep 17 00:00:00 2001 From: "Ben Sheldon [he/him]" <bensheldon@github.com> Date: Mon, 16 Dec 2024 13:25:08 -0800 Subject: [PATCH 3/5] Update render_literal_helpers.rb --- lib/rubocop/cop/github/render_literal_helpers.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubocop/cop/github/render_literal_helpers.rb b/lib/rubocop/cop/github/render_literal_helpers.rb index ee1fad92..7c266127 100644 --- a/lib/rubocop/cop/github/render_literal_helpers.rb +++ b/lib/rubocop/cop/github/render_literal_helpers.rb @@ -29,7 +29,7 @@ module RenderLiteralHelpers PATTERN def_node_matcher :render_view_component_instance_with_content?, <<-PATTERN - (send nil? {:render :render_to_string} (send (send _ :new ...) `:with_content ...) $...) + (send nil? {:render :render_to_string} (block (send (send _ :new ...) `:with_content ...) ...)) PATTERN def_node_matcher :render_view_component_collection?, <<-PATTERN From 8c91e2250210842b273ecb34c2c5b850a6af0acb Mon Sep 17 00:00:00 2001 From: "Ben Sheldon [he/him]" <bensheldon@github.com> Date: Mon, 16 Dec 2024 13:27:11 -0800 Subject: [PATCH 4/5] Update render_literal_helpers.rb --- lib/rubocop/cop/github/render_literal_helpers.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/rubocop/cop/github/render_literal_helpers.rb b/lib/rubocop/cop/github/render_literal_helpers.rb index 7c266127..f600aead 100644 --- a/lib/rubocop/cop/github/render_literal_helpers.rb +++ b/lib/rubocop/cop/github/render_literal_helpers.rb @@ -29,7 +29,11 @@ module RenderLiteralHelpers PATTERN def_node_matcher :render_view_component_instance_with_content?, <<-PATTERN - (send nil? {:render :render_to_string} (block (send (send _ :new ...) `:with_content ...) ...)) + (send nil? {:render :render_to_string} (send (send _ :new ...) `:with_content ...)) + PATTERN + + def_node_matcher :render_view_component_instance_with_inline_block?, <<-PATTERN + (send nil? {:render :render_to_string} (block (send (send _ :new ...) ...) ...)) PATTERN def_node_matcher :render_view_component_collection?, <<-PATTERN @@ -47,6 +51,7 @@ def hash_with_literal_keys?(hash) def render_view_component?(node) render_view_component_instance_with_content?(node) || + render_view_component_instance_with_inline_block?(node) || render_view_component_instance?(node) || render_view_component_collection?(node) end From ec12a4cb8ab0b89aa050048f2d9489816da67f3f Mon Sep 17 00:00:00 2001 From: "Ben Sheldon [he/him]" <bensheldon@github.com> Date: Mon, 16 Dec 2024 13:30:54 -0800 Subject: [PATCH 5/5] Update render_literal_helpers.rb --- lib/rubocop/cop/github/render_literal_helpers.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rubocop/cop/github/render_literal_helpers.rb b/lib/rubocop/cop/github/render_literal_helpers.rb index f600aead..3cf7f574 100644 --- a/lib/rubocop/cop/github/render_literal_helpers.rb +++ b/lib/rubocop/cop/github/render_literal_helpers.rb @@ -29,11 +29,11 @@ module RenderLiteralHelpers PATTERN def_node_matcher :render_view_component_instance_with_content?, <<-PATTERN - (send nil? {:render :render_to_string} (send (send _ :new ...) `:with_content ...)) + (send nil? {:render :render_to_string} (send (send _ :new ...) :with_content ...)) PATTERN def_node_matcher :render_view_component_instance_with_inline_block?, <<-PATTERN - (send nil? {:render :render_to_string} (block (send (send _ :new ...) ...) ...)) + (block (send nil? {:render :render_to_string} (send _ :new ...)) ...) PATTERN def_node_matcher :render_view_component_collection?, <<-PATTERN