Sha256: 505b483d097a1cf554308ca75222f54ddd777cce7fdc6cd9ce8652e419c3e98c

Contents?: true

Size: 1.83 KB

Versions: 13

Compression:

Stored size: 1.83 KB

Contents

require 'helper'
require 'rack/mock'
require 'rack/moneta_store'

describe Rack::MonetaStore do
  def config(store_arg = nil, options = nil, &block)
    @store_arg = store_arg
    @options = options
    @block = block
  end

  def app(&block)
    @app_block ||= block
  end

  def middleware
    @middleware ||= Rack::MonetaStore.new(lambda do |env|
      @store = env['rack.moneta_store']
      app.call(env) if app
      [200,{},[]]
    end, @store_arg, @options || {}, &@block)
  end

  def backend
    @backend ||= Rack::MockRequest.new(middleware)
  end

  def get(&block)
    app(&block)
    @response = backend.get('/')
  end

  def uncached_store
    middleware.instance_variable_get(:@store)
  end

  it 'should be able to get a key without caching' do
    config :Memory
    uncached_store['key'] = 'value'
    get do
      expect(@store['key']).to eql('value')
    end
  end

  it 'should be able to get a key with caching' do
    config :Memory, :cache => true
    uncached_store['key'] = 'value'
    get do
      expect(@store['key']).to eql('value')
      expect(@store.adapter).to equal(uncached_store)
      expect(@store.cache['key']).to eql('value')
    end
  end

  it 'should be able to set a key' do
    config :Memory
    get do
      @store['key'] = 'value'
    end
    expect( @store['key'] ).to eql('value')
    expect(uncached_store['key']).to eql('value')
  end

  it 'should be able to get a remove a key' do
    config :Memory
    uncached_store['key'] = 'value'
    get do
      expect(@store.delete('key')).to eql('value')
    end
    expect(uncached_store.key?('key')).to be false
  end

  it 'should accept a config block' do
    config do
      use :Transformer, :key => :prefix, :prefix => 'moneta.'
      adapter :Memory
    end
    uncached_store['key'] = 'value'
    get do
      expect(@store['key']).to eql('value')
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
moneta-1.5.2 spec/rack/moneta_store_spec.rb
moneta-1.5.1 spec/rack/moneta_store_spec.rb
moneta-1.5.0 spec/rack/moneta_store_spec.rb
moneta-1.4.2 spec/rack/moneta_store_spec.rb
moneta-1.4.1 spec/rack/moneta_store_spec.rb
moneta-1.4.0 spec/rack/moneta_store_spec.rb
moneta-1.3.0 spec/rack/moneta_store_spec.rb
moneta-1.2.1 spec/rack/moneta_store_spec.rb
moneta-1.2.0 spec/rack/moneta_store_spec.rb
moneta-1.1.1 spec/rack/moneta_store_spec.rb
moneta-1.1.0 spec/rack/moneta_store_spec.rb
moneta-1.0.0 spec/rack/moneta_store_spec.rb
moneta-0.8.1 spec/rack/moneta_store_spec.rb