Sha256: 93439ae8ccfa45198b705ceed1cdac64e74deb61e3f2fd968c581d6789fc7f65

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

require 'spec_helper'

describe Kookaburra::Configuration::Proxy do
  subject { described_class.new(name: :foobar, basis: basis) }

  let(:basis) {
    Kookaburra::Configuration.new.tap do |c|
      c.ui_driver_class = default_ui_driver_class
    end
  }

  let(:default_ui_driver_class) { double(:default_ui_driver_class) }

  it 'it knows the name with which it was created' do
    expect(subject.name).to eq :foobar
  end

  it 'delegates to its basis by default' do
    expect(subject.ui_driver_class).to equal default_ui_driver_class
  end

  it 'does not delegate attributes that are set explicitly to a value' do
    ui_driver_class_override = double(:ui_driver_class_override)
    subject.ui_driver_class = ui_driver_class_override
    expect(basis.ui_driver_class).to equal default_ui_driver_class
    expect(subject.ui_driver_class).to equal ui_driver_class_override
  end

  it 'does not delegate attributes that are set explicitly to nil' do
    subject.ui_driver_class = nil
    expect(basis.ui_driver_class).to equal default_ui_driver_class
    expect(subject.ui_driver_class).to be_nil
  end

  it 'responds only to methods to which its basis also responds' do
    expect{ subject.not_a_defined_method }.to raise_error(NameError)
    expect{ subject.not_a_defined_method = :something }.to raise_error(NameError)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kookaburra-3.0.1 spec/kookaburra/configuration/proxy_spec.rb
kookaburra-3.0.0 spec/kookaburra/configuration/proxy_spec.rb