Sha256: a52a2d2f0bcc7c83ebb0e9cb6230a7d69de96243baac2b3e5c6e162a6b405dda

Contents?: true

Size: 1.44 KB

Versions: 35

Compression:

Stored size: 1.44 KB

Contents

require 'spec_helper'

describe FactoryGirl::Attribute::Dynamic do
  let(:name)  { :first_name }
  let(:block) { lambda { } }

  subject { FactoryGirl::Attribute::Dynamic.new(name, false, block) }

  its(:name) { should == name }

  context "with a block returning a static value" do
    let(:block) { lambda { "value" } }

    it "returns the value when executing the proc" do
      subject.to_proc.call.should == "value"
    end
  end

  context "with a block returning its block-level variable" do
    let(:block) { lambda {|thing| thing } }

    it "returns self when executing the proc" do
      subject.to_proc.call.should == subject
    end
  end

  context "with a block referencing an attribute on the attribute" do
    let(:block)  { lambda { attribute_defined_on_attribute } }
    let(:result) { "other attribute value" }

    before do
      subject.stubs(:attribute_defined_on_attribute => result)
    end

    it "evaluates the attribute from the attribute" do
      subject.to_proc.call.should == result
    end
  end

  context "with a block returning a sequence" do
    let(:block) { lambda { Factory.sequence(:email) } }

    it "raises a sequence abuse error" do
      expect { subject.to_proc.call }.to raise_error(FactoryGirl::SequenceAbuseError)
    end
  end
end

describe FactoryGirl::Attribute::Dynamic, "with a string name" do
  subject    { FactoryGirl::Attribute::Dynamic.new("name", false, lambda { } ) }
  its(:name) { should == :name }
end

Version data entries

35 entries across 30 versions & 3 rubygems

Version Path
judge-2.0.5 vendor/bundle/ruby/2.1.0/gems/factory_girl-2.6.4/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.6.2 vendor/bundle/gems/factory_girl-2.6.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.6.1 vendor/bundle/gems/factory_girl-2.6.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.6.1 vendor/bundle/gems/factory_girl-2.5.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.6.0 vendor/bundle/gems/factory_girl-2.5.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.6.0 vendor/bundle/gems/factory_girl-2.6.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.4 vendor/bundle/gems/factory_girl-2.5.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.4 vendor/bundle/gems/factory_girl-2.6.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.3 vendor/bundle/gems/factory_girl-2.6.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.3 vendor/bundle/gems/factory_girl-2.5.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.2 vendor/bundle/gems/factory_girl-2.5.1/spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.2 vendor/bundle/gems/factory_girl-2.6.1/spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-2.6.4 spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-2.6.3 spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-2.6.2 spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.1 vendor/bundle/gems/factory_girl-2.6.1/spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-2.6.1 spec/factory_girl/attribute/dynamic_spec.rb
challah-0.5.0 vendor/bundle/gems/factory_girl-2.5.1/spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-2.6.0 spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-2.5.2 spec/factory_girl/attribute/dynamic_spec.rb