Class: FactoryGirl::Factory
- Inherits:
-
Object
- Object
- FactoryGirl::Factory
- Defined in:
- lib/factory_girl/factory.rb
Instance Attribute Summary collapse
-
#definition ⇒ Object
readonly
:nodoc:.
-
#name ⇒ Object
readonly
:nodoc:.
Instance Method Summary collapse
- #associations ⇒ Object
-
#build_class ⇒ Object
:nodoc:.
- #compile ⇒ Object
-
#default_strategy ⇒ Object
:nodoc:.
- #factory_name ⇒ Object
- #human_names ⇒ Object
-
#initialize(name, options = {}) ⇒ Factory
constructor
:nodoc:.
-
#names ⇒ Object
Names for this factory, including aliases.
-
#run(strategy_class, overrides, &block) ⇒ Object
:nodoc:.
- #with_traits(traits) ⇒ Object
Constructor Details
#initialize(name, options = {}) ⇒ Factory
:nodoc:
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/factory_girl/factory.rb', line 8 def initialize(name, = {}) #:nodoc: () @name = name.is_a?(Symbol) ? name : name.to_s.underscore.to_sym @parent = [:parent] @aliases = [:aliases] || [] @class_name = [:class] @default_strategy = [:default_strategy] @definition = Definition.new(@name, [:traits] || []) @compiled = false end |
Instance Attribute Details
#definition ⇒ Object (readonly)
:nodoc:
6 7 8 |
# File 'lib/factory_girl/factory.rb', line 6 def definition @definition end |
#name ⇒ Object (readonly)
:nodoc:
6 7 8 |
# File 'lib/factory_girl/factory.rb', line 6 def name @name end |
Instance Method Details
#associations ⇒ Object
55 56 57 |
# File 'lib/factory_girl/factory.rb', line 55 def associations evaluator_class.attribute_list.associations end |
#build_class ⇒ Object
:nodoc:
27 28 29 30 31 32 33 |
# File 'lib/factory_girl/factory.rb', line 27 def build_class #:nodoc: @build_class ||= if class_name.is_a? Class class_name else class_name.to_s.camelize.constantize end end |
#compile ⇒ Object
88 89 90 91 92 93 94 95 |
# File 'lib/factory_girl/factory.rb', line 88 def compile unless @compiled parent.compile parent.defined_traits.each {|trait| define_trait(trait) } @definition.compile @compiled = true end end |
#default_strategy ⇒ Object
:nodoc:
35 36 37 |
# File 'lib/factory_girl/factory.rb', line 35 def default_strategy #:nodoc: @default_strategy || parent.default_strategy end |
#factory_name ⇒ Object
22 23 24 25 |
# File 'lib/factory_girl/factory.rb', line 22 def factory_name $stderr.puts "DEPRECATION WARNING: factory.factory_name is deprecated; use factory.name instead." name end |
#human_names ⇒ Object
51 52 53 |
# File 'lib/factory_girl/factory.rb', line 51 def human_names names.map {|name| name.to_s.humanize.downcase } end |
#names ⇒ Object
Names for this factory, including aliases.
Example:
factory :user, :aliases => [:author] do
# ...
end
FactoryGirl.create(:author).class
# => User
Because an attribute defined without a value or block will build an association with the same name, this allows associations to be defined without factories, such as:
factory :user, :aliases => [:author] do
# ...
end
factory :post do
end
FactoryGirl.create(:post)..class
# => User
84 85 86 |
# File 'lib/factory_girl/factory.rb', line 84 def names [name] + @aliases end |
#run(strategy_class, overrides, &block) ⇒ Object
:nodoc:
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/factory_girl/factory.rb', line 39 def run(strategy_class, overrides, &block) #:nodoc: block ||= lambda {|result| result } compile strategy = strategy_class.new evaluator = evaluator_class.new(strategy, overrides.symbolize_keys) attribute_assigner = AttributeAssigner.new(evaluator, &instance_builder) strategy.result(attribute_assigner, to_create).tap(&block) end |
#with_traits(traits) ⇒ Object
97 98 99 100 101 |
# File 'lib/factory_girl/factory.rb', line 97 def with_traits(traits) self.clone.tap do |factory_with_traits| factory_with_traits.inherit_traits traits end end |