diff --git a/lib/factory_girl.rb b/lib/factory_girl.rb index b8ce7b6..be1aae8 100644 --- a/lib/factory_girl.rb +++ b/lib/factory_girl.rb @@ -44,7 +44,7 @@ module FactoryGirl class DuplicateDefinitionError < RuntimeError; end def self.factories - @factories ||= Registry.new + @factories ||= Registry.new("Factory") end def self.register_factory(factory) @@ -56,7 +56,7 @@ module FactoryGirl end def self.sequences - @sequences ||= Registry.new + @sequences ||= Registry.new("Sequence") end def self.register_sequence(sequence) @@ -68,7 +68,7 @@ module FactoryGirl end def self.traits - @traits ||= Registry.new + @traits ||= Registry.new("Trait") end def self.register_trait(trait) diff --git a/lib/factory_girl/registry.rb b/lib/factory_girl/registry.rb index 54be0f2..c8deb22 100644 --- a/lib/factory_girl/registry.rb +++ b/lib/factory_girl/registry.rb @@ -2,7 +2,8 @@ module FactoryGirl class Registry include Enumerable - def initialize + def initialize(name) + @name = name @items = {} end @@ -12,7 +13,7 @@ module FactoryGirl end def find(name) - @items[name.to_sym] or raise ArgumentError.new("Not registered: #{name.to_s}") + @items[name.to_sym] or raise ArgumentError.new("#{@name} not registered: #{name.to_s}") end def each(&block) @@ -35,7 +36,7 @@ module FactoryGirl def add_as(name, item) if registered?(name) - raise DuplicateDefinitionError, "Already defined: #{name}" + raise DuplicateDefinitionError, "#{@name} already registered: #{name}" else @items[name.to_sym] = item end diff --git a/spec/acceptance/modify_factories_spec.rb b/spec/acceptance/modify_factories_spec.rb index 8eb912a..8472422 100644 --- a/spec/acceptance/modify_factories_spec.rb +++ b/spec/acceptance/modify_factories_spec.rb @@ -39,7 +39,7 @@ describe "modifying factories" do it "doesn't allow the factory to be subsequently defined" do expect do FactoryGirl.define { factory :user } - end.to raise_error(FactoryGirl::DuplicateDefinitionError) + end.to raise_error(FactoryGirl::DuplicateDefinitionError, "Factory already registered: user") end it "does allow the factory to be subsequently modified" do diff --git a/spec/acceptance/traits_spec.rb b/spec/acceptance/traits_spec.rb index 94621f2..5c5950e 100644 --- a/spec/acceptance/traits_spec.rb +++ b/spec/acceptance/traits_spec.rb @@ -165,6 +165,6 @@ describe "an instance generated by a factory with multiple traits" do context "factory outside of scope" do subject { FactoryGirl.create(:user_without_admin_scoping) } - it { expect { subject }.to raise_error(ArgumentError, "Not registered: admin_trait") } + it { expect { subject }.to raise_error(ArgumentError, "Trait not registered: admin_trait") } end end diff --git a/spec/factory_girl/registry_spec.rb b/spec/factory_girl/registry_spec.rb index 83fbbcd..805f85c 100644 --- a/spec/factory_girl/registry_spec.rb +++ b/spec/factory_girl/registry_spec.rb @@ -6,8 +6,9 @@ describe FactoryGirl::Registry do let(:factory) { FactoryGirl::Factory.new(:object) } let(:other_factory) { FactoryGirl::Factory.new(:string) } let(:factory_with_aliases) { FactoryGirl::Factory.new(:string, :aliases => aliases) } + let(:registry_name) { "Factory" } - subject { FactoryGirl::Registry.new } + subject { FactoryGirl::Registry.new(registry_name) } it { should be_kind_of(Enumerable) } @@ -17,7 +18,7 @@ describe FactoryGirl::Registry do end it "raises when finding an unregistered factory" do - expect { subject.find(:bogus) }.to raise_error(ArgumentError) + expect { subject.find(:bogus) }.to raise_error(ArgumentError, "Factory not registered: bogus") end it "adds and returns a factory" do @@ -62,7 +63,7 @@ describe FactoryGirl::Registry do it "doesn't allow a duplicate name" do expect { 2.times { subject.add(factory) } }. - to raise_error(FactoryGirl::DuplicateDefinitionError) + to raise_error(FactoryGirl::DuplicateDefinitionError, "Factory already registered: object") end it "registers aliases" do