Sha256: 6c89d9738b4a776540c6df31496ea809516f0cad3b297caaa94f67935b53506c

Contents?: true

Size: 1.75 KB

Versions: 4

Compression:

Stored size: 1.75 KB

Contents

require 'spec_helper'

describe VCR::Middleware::Rack do
  describe '.new' do
    it 'raises an error if no cassette arguments block is provided' do
      expect {
        described_class.new(lambda { |env| })
      }.to raise_error(ArgumentError)
    end
  end

  describe '#call' do
    let(:env_hash) { { :env => :hash } }
    it 'calls the provided rack app and returns its response' do
      rack_app = mock
      rack_app.should_receive(:call).with(env_hash).and_return(:response)
      instance = described_class.new(rack_app) { |c| c.name 'cassette_name' }
      instance.call(env_hash).should == :response
    end

    it 'uses a cassette when the rack app is called' do
      VCR.current_cassette.should be_nil
      rack_app = lambda { |env| VCR.current_cassette.should_not be_nil }
      instance = described_class.new(rack_app) { |c| c.name 'cassette_name' }
      instance.call({})
      VCR.current_cassette.should be_nil
    end

    it 'sets the cassette name based on the provided block' do
      rack_app = lambda { |env| VCR.current_cassette.name.should == 'rack_cassette' }
      instance = described_class.new(rack_app) { |c| c.name 'rack_cassette' }
      instance.call({})
    end

    it 'sets the cassette options based on the provided block' do
      rack_app = lambda { |env| VCR.current_cassette.erb.should == { :foo => :bar } }
      instance = described_class.new(rack_app) do |c|
        c.name    'c'
        c.options :erb => { :foo => :bar }
      end

      instance.call({})
    end

    it 'yields the rack env to the provided block when the block accepts 2 arguments' do
      instance = described_class.new(lambda { |env| }) do |c, env|
        env.should == env_hash
        c.name    'c'
      end

      instance.call(env_hash)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vcr-1.6.0 spec/vcr/middleware/rack_spec.rb
vcr-1.5.1 spec/vcr/middleware/rack_spec.rb
vcr-1.5.0 spec/vcr/middleware/rack_spec.rb
vcr-1.4.0 spec/middleware/rack_spec.rb