From 7321a1112f0bbe7c9789eb9843fedbe9df5d6163 Mon Sep 17 00:00:00 2001 From: masarakki Date: Tue, 5 May 2020 07:40:54 +0900 Subject: [PATCH] fix-finding-extension https://github.com/rails/rails/blob/6-0-3/actionview/lib/action_view/template/resolver.rb#L349-L351 Resolver search files and resolve most matched file with **symbolized** string, so `_default_render_options` must return symbolized values. --- lib/rspec/rails/example/view_example_group.rb | 8 +++++--- spec/rspec/rails/example/view_example_group_spec.rb | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/rspec/rails/example/view_example_group.rb b/lib/rspec/rails/example/view_example_group.rb index 2240dd830a..05f58da38e 100644 --- a/lib/rspec/rails/example/view_example_group.rb +++ b/lib/rspec/rails/example/view_example_group.rb @@ -150,10 +150,12 @@ def _default_render_options match = path_regex.match(_default_file_to_render) render_options = {template: match[:template]} - render_options[:handlers] = [match[:handler]] if match[:handler] + + # remove stringified parts when dropping rails-4.x support + render_options[:handlers] = [match[:handler], match[:handler].to_sym] if match[:handler] render_options[:formats] = [match[:format].to_sym] if match[:format] - render_options[:locales] = [match[:locale]] if match[:locale] - render_options[:variants] = [match[:variant]] if match[:variant] + render_options[:locales] = [match[:locale], match[:locale].to_sym] if match[:locale] + render_options[:variants] = [match[:variant], match[:variant].to_sym] if match[:variant] render_options end diff --git a/spec/rspec/rails/example/view_example_group_spec.rb b/spec/rspec/rails/example/view_example_group_spec.rb index d16002ff60..85f1c42674 100644 --- a/spec/rspec/rails/example/view_example_group_spec.rb +++ b/spec/rspec/rails/example/view_example_group_spec.rb @@ -148,19 +148,19 @@ def _default_file_to_render; end # Stub method it "converts the filename components into render options" do allow(view_spec).to receive(:_default_file_to_render) { "widgets/new.en.html.erb" } view_spec.render - expect(view_spec.received.first).to eq([{template: "widgets/new", locales: ['en'], formats: [:html], handlers: ['erb']}, {}, nil]) + expect(view_spec.received.first).to eq([{template: "widgets/new", locales: ['en', :en], formats: [:html], handlers: ['erb', :erb]}, {}, nil]) end it "converts the filename with variant into render options" do allow(view_spec).to receive(:_default_file_to_render) { "widgets/new.en.html+fancy.erb" } view_spec.render - expect(view_spec.received.first).to eq([{template: "widgets/new", locales: ['en'], formats: [:html], handlers: ['erb'], variants: ['fancy']}, {}, nil]) + expect(view_spec.received.first).to eq([{template: "widgets/new", locales: ['en', :en], formats: [:html], handlers: ['erb', :erb], variants: ['fancy', :fancy]}, {}, nil]) end it "converts the filename without format into render options" do allow(view_spec).to receive(:_default_file_to_render) { "widgets/new.en.erb" } view_spec.render - expect(view_spec.received.first).to eq([{template: "widgets/new", locales: ['en'], handlers: ['erb']}, {}, nil]) + expect(view_spec.received.first).to eq([{template: "widgets/new", locales: ['en', :en], handlers: ['erb', :erb]}, {}, nil]) end end