Skip to content

Commit ebe1714

Browse files
author
Laurent Cobos
committed
[FIX-1554] fixture_file_upload cannot find files
1 parent 404651a commit ebe1714

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed

lib/rspec/rails.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
require 'rspec/rails/view_rendering'
1010
require 'rspec/rails/matchers'
1111
require 'rspec/rails/fixture_support'
12+
require 'rspec/rails/fixture_file_upload_support'
1213
require 'rspec/rails/file_fixture_support'
1314
require 'rspec/rails/example'
1415
require 'rspec/rails/vendor/capybara'

lib/rspec/rails/configuration.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ def self.initialize_configuration(config)
8383
if ::Rails::VERSION::STRING > '5'
8484
config.add_setting :file_fixture_path, :default => 'spec/fixtures/files'
8585
config.include RSpec::Rails::FileFixtureSupport
86+
elsif ::Rails::VERSION::STRING >= '3'
87+
config.include RSpec::Rails::FixtureFileUploadSupport
8688
end
8789
# This allows us to expose `render_views` as a config option even though it
8890
# breaks the convention of other options by using `render_views` as a
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
require 'singleton'
2+
3+
module RSpec
4+
module Rails
5+
# @private
6+
module FixtureFileUploadSupport
7+
extend ActiveSupport::Concern
8+
9+
included do
10+
delegate :fixture_file_upload, :to => :rails_test_wrapper
11+
end
12+
13+
private
14+
15+
def rails_test_wrapper
16+
resolved_fixture_path = fixture_path || RSpec.configuration.fixture_path || ''
17+
RailsTestWrapper.fixture_path = File.join(resolved_fixture_path, '')
18+
RailsTestWrapper.instance
19+
end
20+
21+
class RailsTestWrapper
22+
include Singleton
23+
cattr_accessor :fixture_path
24+
25+
if defined?(ActionDispatch::TestProcess)
26+
include ActionDispatch::TestProcess
27+
end
28+
end
29+
end
30+
end
31+
end
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
require 'spec_helper'
2+
3+
describe RSpec::Rails::FixtureFileUploadSupport do
4+
context 'with fixture path set in config' do
5+
before { RSpec.configuration.fixture_path = File.dirname(__FILE__) }
6+
7+
it 'resolves fixture file' do
8+
expect(fixture_file_upload_resolved.run).to be true
9+
end
10+
end
11+
12+
context 'with fixture path set in spec' do
13+
it 'resolves fixture file' do
14+
expect(fixture_file_upload_resolved(File.dirname(__FILE__)).run).to be true
15+
end
16+
end
17+
18+
def fixture_file_upload_resolved(fixture_path = nil)
19+
RSpec::Core::ExampleGroup.describe do
20+
include RSpec::Rails::FixtureFileUploadSupport
21+
22+
self.fixture_path = fixture_path if fixture_path
23+
24+
it 'supports fixture file upload' do
25+
file = fixture_file_upload(File.basename(__FILE__))
26+
expect(file.read).to match(/describe FixtureFileUploadSupport/im)
27+
end
28+
end
29+
end
30+
end

0 commit comments

Comments
 (0)