diff --git a/lib/factory_girl/factory.rb b/lib/factory_girl/factory.rb index 5d38dd9..3358074 100644 --- a/lib/factory_girl/factory.rb +++ b/lib/factory_girl/factory.rb @@ -87,8 +87,8 @@ module FactoryGirl def compile unless @compiled - parent.defined_traits.each {|trait| define_trait(trait) } parent.compile + parent.defined_traits.each {|trait| define_trait(trait) } @definition.compile @compiled = true end diff --git a/spec/acceptance/traits_spec.rb b/spec/acceptance/traits_spec.rb index 542dd40..c960243 100644 --- a/spec/acceptance/traits_spec.rb +++ b/spec/acceptance/traits_spec.rb @@ -60,6 +60,10 @@ describe "an instance generated by a factory with multiple traits" do name "Judy" end + factory :female_great_user do + great + end + factory :female_admin_judy, :traits => [:admin] end @@ -167,6 +171,11 @@ describe "an instance generated by a factory with multiple traits" do subject { FactoryGirl.create(:user_without_admin_scoping) } it { expect { subject }.to raise_error(ArgumentError, "Trait not registered: admin_trait") } end + + context "child factory using grandparents' trait" do + subject { FactoryGirl.create(:female_great_user) } + its(:great) { should == "GREAT!!!" } + end end describe "traits with callbacks" do