Sha256: 46dc6e00c672cd5a262068d60afb98fdbabb8d5d61883740743b12924a1f1e66

Contents?: true

Size: 788 Bytes

Versions: 1

Compression:

Stored size: 788 Bytes

Contents

describe "shared definition" do
  subject do
    class Test::Foo
      extend Dry::Initializer::Mixin

      class << self
        alias_method :attribute, :param
      end

      using default: proc { nil } do
        attribute :foo
        option :end
        option :baz, default: proc { 0 }
      end

      using optional: true do
        option :qux
        option :quxx, optional: false
      end
    end
  end

  it "is applied to params and options" do
    instance = subject.new(quxx: 1)

    expect(instance.foo).to be_nil
    expect(instance.end).to be_nil
  end

  it "can be reloaded" do
    instance = subject.new(quxx: 1)

    expect(instance.baz).to eq 0
  end

  it "can reload :optional setting" do
    expect { subject.new }.to raise_error(KeyError, /quxx/)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dry-initializer-0.9.3 spec/shared_definitions_spec.rb