Sha256: 31fdee3cbd3515d8fed3ca993501d3d9f0a837d368571dc8bc46f5637e600910

Contents?: true

Size: 1.28 KB

Versions: 7

Compression:

Stored size: 1.28 KB

Contents

module RSpec
  module Rails
    # @private
    module FixtureFileUploadSupport
      delegate :fixture_file_upload, :to => :rails_fixture_file_wrapper

    private

      def rails_fixture_file_wrapper
        RailsFixtureFileWrapper.fixture_path = nil
        resolved_fixture_path = (fixture_path || RSpec.configuration.fixture_path || '').to_s
        RailsFixtureFileWrapper.fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
        RailsFixtureFileWrapper.instance
      end

      class RailsFixtureFileWrapper
        include ActionDispatch::TestProcess if defined?(ActionDispatch::TestProcess)

        class << self
          attr_reader :fixture_path

          # Get instance of wrapper
          def instance
            @instance ||= new
          end

          # Override fixture_path set
          # to support Rails 3.0->3.1 using ActionController::TestCase class to resolve fixture_path
          # see https://apidock.com/rails/v3.0.0/ActionDispatch/TestProcess/fixture_file_upload
          def fixture_path=(value)
            if ActionController::TestCase.respond_to?(:fixture_path)
              ActionController::TestCase.fixture_path = value
            end
            @fixture_path = value
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rspec-rails-3.9.1 lib/rspec/rails/fixture_file_upload_support.rb
rspec-rails-4.0.0.beta3 lib/rspec/rails/fixture_file_upload_support.rb
rspec-rails-3.8.3 lib/rspec/rails/fixture_file_upload_support.rb
rspec-rails-3.9.0 lib/rspec/rails/fixture_file_upload_support.rb
rspec-rails-4.0.0.beta2 lib/rspec/rails/fixture_file_upload_support.rb
rspec-rails-3.8.2 lib/rspec/rails/fixture_file_upload_support.rb
rspec-rails-3.8.1 lib/rspec/rails/fixture_file_upload_support.rb