Sha256: 553a611ab48657ff25d46e06defcbe102cccaeacdb98ae6524fd024b6dd60b12

Contents?: true

Size: 1003 Bytes

Versions: 9

Compression:

Stored size: 1003 Bytes

Contents

describe Dry::Initializer, "dry_initializer.attributes" do
  subject { instance.class.dry_initializer.attributes(instance) }

  context "when class has params" do
    before do
      class Test::Foo
        extend Dry::Initializer
        param :foo, proc(&:to_s)
        param :bar, default: proc { 1 }
        param :baz, optional: true
      end
    end

    let(:instance) { Test::Foo.new(:FOO) }

    it "collects coerced params with default values" do
      expect(subject).to eq({ foo: "FOO", bar: 1 })
    end
  end

  context "when class has options" do
    before do
      class Test::Foo
        extend Dry::Initializer
        option :foo
        option :bar, default: proc { 1 }
        option :baz, optional: true
        option :qux, proc(&:to_s), as: :quxx
      end
    end

    let(:instance) { Test::Foo.new(foo: :FOO, qux: :QUX) }

    it "collects coerced and renamed options with default values" do
      expect(subject).to eq({ foo: :FOO, bar: 1, quxx: "QUX" })
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
dry-initializer-3.0.2 spec/attributes_spec.rb
dry-initializer-3.0.1 spec/attributes_spec.rb
dry-initializer-3.0.0 spec/attributes_spec.rb
dry-initializer-2.5.0 spec/attributes_spec.rb
dry-initializer-2.4.0 spec/attributes_spec.rb
dry-initializer-2.3.0 spec/attributes_spec.rb
dry-initializer-2.2.0 spec/attributes_spec.rb
dry-initializer-2.1.0 spec/attributes_spec.rb
dry-initializer-2.0.0 spec/attributes_spec.rb