module VCR::RSpec::Metadata

@private

Public Instance Methods

configure!() click to toggle source
# File lib/vcr/test_frameworks/rspec.rb, line 64
def configure!
  ::RSpec.configure do |config|
    vcr_cassette_name_for = lambda do |metadata|
      description = metadata[:description]

      if example_group = metadata[:example_group]
        [vcr_cassette_name_for[example_group], description].join('/')
      else
        description
      end
    end

    config.around(:each, :vcr => lambda { |v| !!v }) do |example|
      options = example.metadata[:vcr]
      options = options.is_a?(Hash) ? options.dup : {} # in case it's just :vcr => true

      cassette_name = options.delete(:cassette_name) ||
                      vcr_cassette_name_for[example.metadata]

      VCR.use_cassette(cassette_name, options, &example)
    end
  end
end