Sha256: ab8c2c07d52eb0a7d94823c39ad1cddf94e4d7f7ac080b9505436151f76e2096

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

require 'spec_helper'

describe Factory::Attribute::Dynamic do
  before do
    @name  = :first_name
    @block = lambda { 'value' }
    @attr  = Factory::Attribute::Dynamic.new(@name, @block)
  end

  it "should have a name" do
    @attr.name.should == @name
  end

  it "should call the block to set a value" do
    @proxy = "proxy"
    stub(@proxy).set
    @attr.add_to(@proxy)
    @proxy.should have_received.set(@name, 'value')
  end

  it "should yield the proxy to the block when adding its value to a proxy" do
    @block = lambda {|a| a }
    @attr  = Factory::Attribute::Dynamic.new(:user, @block)
    @proxy = "proxy"
    stub(@proxy).set
    @attr.add_to(@proxy)
    @proxy.should have_received.set(:user, @proxy)
  end

  it "should raise an error when defining an attribute writer" do
    lambda {
      Factory::Attribute::Dynamic.new('test=', nil)
    }.should raise_error(Factory::AttributeDefinitionError)
  end

  it "should raise an error when returning a sequence" do
    stub(Factory).sequence { Factory::Sequence.new }
    block = lambda { Factory.sequence(:email) }
    attr = Factory::Attribute::Dynamic.new(:email, block)
    proxy = stub!.set.subject
    lambda {
      attr.add_to(proxy)
    }.should raise_error(Factory::SequenceAbuseError)
  end

  it "should convert names to symbols" do
    Factory::Attribute::Dynamic.new('name', nil).name.should == :name
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
factory_girl-1.3.3 spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-1.3.2 spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-1.3.1 spec/factory_girl/attribute/dynamic_spec.rb
factory_girl-1.3.0 spec/factory_girl/attribute/dynamic_spec.rb