1
0
Fork 0
mirror of https://github.com/thoughtbot/factory_bot.git synced 2022-11-09 11:43:51 -05:00

Handle namespaced classes passed as string.

This commit is contained in:
Michał Łomnicki 2010-03-17 23:49:35 +01:00 committed by Tristan Dunn
parent 16feec01f1
commit ecc6e5493e
3 changed files with 27 additions and 1 deletions

View file

@ -345,7 +345,10 @@ class Factory
def class_for (class_or_to_s) def class_for (class_or_to_s)
if class_or_to_s.respond_to?(:to_sym) if class_or_to_s.respond_to?(:to_sym)
Object.const_get(variable_name_to_class_name(class_or_to_s)) class_name = variable_name_to_class_name(class_or_to_s)
class_name.split('::').inject(Object) do |object, string|
object.const_get(string)
end
else else
class_or_to_s class_or_to_s
end end

View file

@ -398,6 +398,24 @@ describe Factory do
end end
end end
describe "a factory for namespaced class" do
before do
Factory.factories = {}
@name = :settings
@class = Admin::Settings
end
it "should build namespaced class passed by string" do
factory = Factory.define(@name.to_s, :class => @class.name) {}
factory.build_class.should == @class
end
it "should build Admin::Settings class from Admin::Settings string" do
factory = Factory.define(@name.to_s, :class => @class.name.underscore) {}
factory.build_class.should == @class
end
end
describe "after defining a factory" do describe "after defining a factory" do
before do before do
@name = :user @name = :user

View file

@ -41,3 +41,8 @@ class Post < ActiveRecord::Base
validates_presence_of :name, :author_id validates_presence_of :name, :author_id
belongs_to :author, :class_name => 'User' belongs_to :author, :class_name => 'User'
end end
module Admin
class Settings
end
end