Skip to content

Commit d3e1c4b

Browse files
committed
migrate to Rails 7.1's file_fixture_upload naming approach
rails/rails#48857 renamed `fixture_file_upload` to `file_fixture_upload` to reduce "confusion and surprise". With this change, `file_fixture_upload` now works in RSpec, with `fixture_file_upload` still functional to maintain backwards compatibility.
1 parent b109337 commit d3e1c4b

File tree

7 files changed

+28
-28
lines changed

7 files changed

+28
-28
lines changed

.rubocop_todo.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ Lint/SuppressedException:
116116
# AllowedPatterns: (?-mix:(exactly|at_least|at_most)\(\d+\)\.times)
117117
Lint/UnreachableLoop:
118118
Exclude:
119-
- 'spec/rspec/rails/fixture_file_upload_support_spec.rb'
119+
- 'spec/rspec/rails/file_fixture_upload_support_spec.rb'
120120
- 'spec/rspec/rails/fixture_support_spec.rb'
121121

122122
# Offense count: 12

example_app_generator/generate_stuff.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def setup_tasks
4848
def final_tasks
4949
copy_file 'spec/verify_no_active_record_spec.rb'
5050
copy_file 'spec/verify_no_fixture_setup_spec.rb'
51-
copy_file 'spec/verify_fixture_file_upload_spec.rb'
51+
copy_file 'spec/verify_file_fixture_upload_spec.rb'
5252
end
5353

5454
def skip_active_record?
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
require 'rails_helper'
22

33
RSpec.describe 'Example App', :use_fixtures, type: :model do
4-
it 'supports fixture file upload' do
5-
file = fixture_file_upload(__FILE__)
4+
it 'supports file_fixture_upload' do
5+
file = file_fixture_upload(__FILE__)
66
expect(file.read).to match(/RSpec\.describe 'Example App'/im)
77
end
88
end

lib/rspec/rails.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
require 'rspec/rails/matchers'
1111
require 'rspec/rails/fixture_support'
1212
require 'rspec/rails/file_fixture_support'
13-
require 'rspec/rails/fixture_file_upload_support'
13+
require 'rspec/rails/file_fixture_upload_support'
1414
require 'rspec/rails/example'
1515
require 'rspec/rails/vendor/capybara'
1616
require 'rspec/rails/configuration'

lib/rspec/rails/configuration.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ def self.initialize_configuration(config) # rubocop:disable Metrics/MethodLength
9090
config.add_setting :file_fixture_path, default: 'spec/fixtures/files'
9191
config.include RSpec::Rails::FileFixtureSupport
9292

93-
# Add support for fixture_path on fixture_file_upload
94-
config.include RSpec::Rails::FixtureFileUploadSupport
93+
# Add support for fixture_path on file_fixture_upload
94+
config.include RSpec::Rails::FileFixtureUploadSupport
9595

9696
# This allows us to expose `render_views` as a config option even though it
9797
# breaks the convention of other options by using `render_views` as a

lib/rspec/rails/fixture_file_upload_support.rb lib/rspec/rails/file_fixture_upload_support.rb

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
module RSpec
22
module Rails
33
# @private
4-
module FixtureFileUploadSupport
5-
delegate :fixture_file_upload, to: :rails_fixture_file_wrapper
4+
module FileFixtureUploadSupport
5+
delegate :file_fixture_upload, :fixture_file_upload, to: :rails_file_fixture_wrapper
66

77
private
88

99
# In Rails 7.0 fixture file path needs to be relative to `file_fixture_path` instead, this change
1010
# was brought in with a deprecation warning on 6.1. In Rails 7.0 expect to rework this to remove
1111
# the old accessor.
12-
def rails_fixture_file_wrapper
13-
RailsFixtureFileWrapper.file_fixture_path = nil
12+
def rails_file_fixture_wrapper
13+
RailsFileFixtureWrapper.file_fixture_path = nil
1414
resolved_fixture_path =
1515
if respond_to?(:file_fixture_path) && !file_fixture_path.nil?
1616
file_fixture_path.to_s
@@ -19,11 +19,11 @@ def rails_fixture_file_wrapper
1919
else
2020
(RSpec.configuration.fixture_path || '').to_s
2121
end
22-
RailsFixtureFileWrapper.file_fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
23-
RailsFixtureFileWrapper.instance
22+
RailsFileFixtureWrapper.file_fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
23+
RailsFileFixtureWrapper.instance
2424
end
2525

26-
class RailsFixtureFileWrapper
26+
class RailsFileFixtureWrapper
2727
include ActionDispatch::TestProcess if defined?(ActionDispatch::TestProcess)
2828
include ActiveSupport::Testing::FileFixtures
2929

spec/rspec/rails/fixture_file_upload_support_spec.rb spec/rspec/rails/file_fixture_upload_support_spec.rb

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,53 @@
11
module RSpec::Rails
2-
RSpec.describe FixtureFileUploadSupport do
2+
RSpec.describe FileFixtureUploadSupport do
33
if ::Rails::VERSION::STRING < "7.1.0"
44
context 'with fixture path set in config' do
55
it 'resolves fixture file' do
66
RSpec.configuration.fixture_path = File.dirname(__FILE__)
7-
expect_to_pass fixture_file_upload_resolved('fixture_file_upload_support_spec.rb')
7+
expect_to_pass file_fixture_upload_resolved('file_fixture_upload_support_spec.rb')
88
end
99

1010
it 'resolves supports `Pathname` objects' do
1111
RSpec.configuration.fixture_path = Pathname(File.dirname(__FILE__))
12-
expect_to_pass fixture_file_upload_resolved('fixture_file_upload_support_spec.rb')
12+
expect_to_pass file_fixture_upload_resolved('file_fixture_upload_support_spec.rb')
1313
end
1414
end
1515

1616
context 'with fixture path set in spec' do
1717
it 'resolves fixture file' do
18-
expect_to_pass fixture_file_upload_resolved('fixture_file_upload_support_spec.rb', File.dirname(__FILE__))
18+
expect_to_pass file_fixture_upload_resolved('file_fixture_upload_support_spec.rb', File.dirname(__FILE__))
1919
end
2020
end
2121

2222
context 'with fixture path not set' do
2323
it 'resolves fixture using relative path' do
2424
RSpec.configuration.fixture_path = nil
25-
expect_to_pass fixture_file_upload_resolved('spec/rspec/rails/fixture_file_upload_support_spec.rb')
25+
expect_to_pass file_fixture_upload_resolved('spec/rspec/rails/file_fixture_upload_support_spec.rb')
2626
end
2727
end
2828
else
2929
context 'with fixture paths set in config' do
3030
it 'resolves fixture file' do
3131
RSpec.configuration.fixture_paths = [File.dirname(__FILE__)]
32-
expect_to_pass fixture_file_upload_resolved('fixture_file_upload_support_spec.rb')
32+
expect_to_pass file_fixture_upload_resolved('file_fixture_upload_support_spec.rb')
3333
end
3434

3535
it 'resolves supports `Pathname` objects' do
3636
RSpec.configuration.fixture_paths = [Pathname(File.dirname(__FILE__))]
37-
expect_to_pass fixture_file_upload_resolved('fixture_file_upload_support_spec.rb')
37+
expect_to_pass file_fixture_upload_resolved('file_fixture_upload_support_spec.rb')
3838
end
3939
end
4040

4141
context 'with fixture path set in spec' do
4242
it 'resolves fixture file' do
43-
expect_to_pass fixture_file_upload_resolved('fixture_file_upload_support_spec.rb', File.dirname(__FILE__))
43+
expect_to_pass file_fixture_upload_resolved('file_fixture_upload_support_spec.rb', File.dirname(__FILE__))
4444
end
4545
end
4646

4747
context 'with fixture path not set' do
4848
it 'resolves fixture using relative path' do
4949
RSpec.configuration.fixture_path = nil
50-
expect_to_pass fixture_file_upload_resolved('spec/rspec/rails/fixture_file_upload_support_spec.rb')
50+
expect_to_pass file_fixture_upload_resolved('spec/rspec/rails/file_fixture_upload_support_spec.rb')
5151
end
5252
end
5353
end
@@ -58,15 +58,15 @@ def expect_to_pass(group)
5858
expect(result).to be true
5959
end
6060

61-
def fixture_file_upload_resolved(fixture_name, file_fixture_path = nil)
61+
def file_fixture_upload_resolved(fixture_name, file_fixture_path = nil)
6262
RSpec::Core::ExampleGroup.describe do
63-
include RSpec::Rails::FixtureFileUploadSupport
63+
include RSpec::Rails::FileFixtureUploadSupport
6464

6565
self.file_fixture_path = file_fixture_path
6666

67-
it 'supports fixture file upload' do
68-
file = fixture_file_upload(fixture_name)
69-
expect(file.read).to match(/describe FixtureFileUploadSupport/im)
67+
it 'supports file_fixture_upload' do
68+
file = file_fixture_upload(fixture_name)
69+
expect(file.read).to match(/describe FileFixtureUploadSupport/im)
7070
end
7171
end
7272
end

0 commit comments

Comments
 (0)