mirror of
https://github.com/thoughtbot/factory_bot.git
synced 2022-11-09 11:43:51 -05:00
d918c1ddae
This fixes a regression introduced with the introduction of the anonymous class. Closes #264
53 lines
1.4 KiB
Ruby
53 lines
1.4 KiB
Ruby
require "spec_helper"
|
|
|
|
describe "calling methods on the model instance" do
|
|
before do
|
|
define_model('User', :age => :integer, :age_copy => :integer) do
|
|
def age
|
|
read_attribute(:age) || 18
|
|
end
|
|
end
|
|
|
|
FactoryGirl.define do
|
|
factory :user do
|
|
age_copy { age }
|
|
end
|
|
end
|
|
end
|
|
|
|
context "without the attribute being overridden" do
|
|
it "returns the correct value from the instance" do
|
|
FactoryGirl.build(:user).age_copy.should == 18
|
|
end
|
|
|
|
it "returns nil during attributes_for" do
|
|
FactoryGirl.attributes_for(:user)[:age_copy].should be_nil
|
|
end
|
|
|
|
it "doesn't instantiate a record with attributes_for" do
|
|
User.stubs(:new)
|
|
FactoryGirl.attributes_for(:user)
|
|
User.should have_received(:new).never
|
|
end
|
|
end
|
|
|
|
context "with the attribute being overridden" do
|
|
it "uses the overridden value" do
|
|
FactoryGirl.build(:user, :age_copy => nil).age_copy.should be_nil
|
|
end
|
|
|
|
it "uses the overridden value during attributes_for" do
|
|
FactoryGirl.attributes_for(:user, :age_copy => 25)[:age_copy].should == 25
|
|
end
|
|
end
|
|
|
|
context "with the referenced attribute being overridden" do
|
|
it "uses the overridden value" do
|
|
FactoryGirl.build(:user, :age => nil).age_copy.should be_nil
|
|
end
|
|
|
|
it "uses the overridden value during attributes_for" do
|
|
FactoryGirl.attributes_for(:user, :age => 25)[:age_copy].should == 25
|
|
end
|
|
end
|
|
end
|