Sha256: dfaf9c4d111b682ec8bf762b846a503ffd0f3140cb8474b814a2c8ae3494bd17

Contents?: true

Size: 919 Bytes

Versions: 3

Compression:

Stored size: 919 Bytes

Contents

describe "assignment by custom key" do
  context "with mixin syntax" do
    before do
      class Test::Order
        extend Dry::Initializer

        param  :user,    model: "User", find_by: "name"
        option :product, model: Item,   find_by: :name
      end
    end

    let!(:user) { User.create name: "Dude" }
    let!(:item) { Item.create name: "The thing" }

    it "works when records are present" do
      subject = Test::Order.new("Dude", product: "The thing")

      expect(subject.user).to eql user
      expect(subject.product).to eql item
    end

    it "raises when records are absent" do
      Test::Order.new("Dude", product: "The thing")

      expect { Test::Order.new("Man", product: "The thing") }
        .to raise_error ActiveRecord::RecordNotFound

      expect { Test::Order.new("Dude", product: "Something strange") }
        .to raise_error ActiveRecord::RecordNotFound
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-initializer-rails-3.1.1 spec/dry/initializer/assignment_by_custom_key_spec.rb
dry-initializer-rails-3.1.0 spec/dry/initializer/assignment_by_custom_key_spec.rb
dry-initializer-rails-3.0.0 spec/dry/initializer/assignment_by_custom_key_spec.rb