From 00ef181fd42ad5050bf90134312b0d0fc64313a8 Mon Sep 17 00:00:00 2001 From: Rick Selby Date: Sun, 9 Feb 2025 11:12:59 +0000 Subject: [PATCH] Update `show_helper` to support `type` argument added in Rails 7 --- lib/generators/rspec/scaffold/scaffold_generator.rb | 12 +++++++++--- lib/generators/rspec/scaffold/templates/edit_spec.rb | 2 +- .../rspec/scaffold/scaffold_generator_spec.rb | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/generators/rspec/scaffold/scaffold_generator.rb b/lib/generators/rspec/scaffold/scaffold_generator.rb index 7e0af83ee..297d9f123 100644 --- a/lib/generators/rspec/scaffold/scaffold_generator.rb +++ b/lib/generators/rspec/scaffold/scaffold_generator.rb @@ -4,7 +4,7 @@ module Rspec module Generators # @private - class ScaffoldGenerator < Base + class ScaffoldGenerator < Base # rubocop:disable Metrics/ClassLength include ::Rails::Generators::ResourceHelpers source_paths << File.expand_path('../helper/templates', __dir__) argument :attributes, type: :array, default: [], banner: "field:type field:type" @@ -128,8 +128,14 @@ def banner self.class.banner end - def show_helper(resource_name = file_name) - "#{singular_route_name}_url(#{resource_name})" + if Rails::VERSION::STRING.to_f < 7.0 + def show_helper(resource_name = file_name, type: :url) + "#{singular_route_name}_#{type}(#{resource_name})" + end + else + def show_helper(arg = file_name, type: :url) + super + end end end end diff --git a/lib/generators/rspec/scaffold/templates/edit_spec.rb b/lib/generators/rspec/scaffold/templates/edit_spec.rb index fdbc3043d..05e52742f 100644 --- a/lib/generators/rspec/scaffold/templates/edit_spec.rb +++ b/lib/generators/rspec/scaffold/templates/edit_spec.rb @@ -17,7 +17,7 @@ it "renders the edit <%= ns_file_name %> form" do render - assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(<%= singular_table_name %>), "post" do + assert_select "form[action=?][method=?]", <%= show_helper(singular_table_name, type: :path) %>, "post" do <% for attribute in output_attributes -%> <%- name = attribute.respond_to?(:column_name) ? attribute.column_name : attribute.name %> assert_select "<%= attribute.input_type -%>[name=?]", "<%= ns_file_name %>[<%= name %>]" diff --git a/spec/generators/rspec/scaffold/scaffold_generator_spec.rb b/spec/generators/rspec/scaffold/scaffold_generator_spec.rb index 3c663dc83..ef78b7add 100644 --- a/spec/generators/rspec/scaffold/scaffold_generator_spec.rb +++ b/spec/generators/rspec/scaffold/scaffold_generator_spec.rb @@ -242,6 +242,7 @@ expect(filename).to contain(/require 'rails_helper'/) .and(contain(/^RSpec.describe "(.*)\/edit", #{type_metatag(:view)}/)) .and(contain(/assign\(:post, post\)/)) + .and(contain(/assert_select "form\[action=\?\]\[method=\?\]", post_path\(post\), "post" do/)) .and(contain(/it "renders the edit (.*) form"/)) end end