Sha256: 733698a0adf721fec5ed00d8c8549bad6e0676c3b37690a5a43e7c97ea734533

Contents?: true

Size: 1.12 KB

Versions: 7

Compression:

Stored size: 1.12 KB

Contents

describe Moneta::Builder do
  it 'raises an error if #use is called after #adapter' do
    expect do
      Moneta::Builder.new do
        adapter :Null
        use :Lock
      end.build
    end.to raise_error /Please check/
  end

  it 'raises an error if #adapter called twice' do
    expect do
      Moneta::Builder.new do
        adapter :Null
        adapter :Null
      end.build
    end.to raise_error /Please check/
  end

  it 'raises an error if no #adapter is specified' do
    expect do
      Moneta::Builder.new do
        use :Lock
        use :Lock
      end.build
    end.to raise_error /Please check/
  end

  it 'dups options before passing them to each middleware' do
    my_adapter = Class.new do
      def initialize(options)
        throw "a is missing" unless options.delete(:a)
      end
    end

    my_middleware = Class.new do
      def initialize(backend, options)
        throw "a is missing" unless options.delete(:a)
      end
    end

    options = { a: 1 }
    Moneta::Builder.new do
      use my_middleware, options
      adapter my_adapter, options
    end.build

    expect(options).to include(a: 1)
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
moneta-1.5.2 spec/moneta/builder_spec.rb
moneta-1.5.1 spec/moneta/builder_spec.rb
moneta-1.5.0 spec/moneta/builder_spec.rb
moneta-1.4.2 spec/moneta/builder_spec.rb
moneta-1.4.1 spec/moneta/builder_spec.rb
moneta-1.4.0 spec/moneta/builder_spec.rb
moneta-1.3.0 spec/moneta/builder_spec.rb