Generates and returns a Hash of attributes from this factory. Attributes can be individually overridden by passing in a Hash of attribute => value pairs.
Arguments:
name: Symbol
or String
The name of the factory
that should be used.
traits_and_overrides: Array
Traits to be applied
Hash
Attributes to overwrite for this set.
block: Yields the hash of attributes.
Returns: Hash
A set of attributes that can be used to build an
instance of the class this factory generates.
# File lib/factory_girl/syntax/methods.rb, line 20 def attributes_for(name, *traits_and_overrides, &block) run_factory_girl_proxy(name, traits_and_overrides, Proxy::AttributesFor, &block) end
Generates and returns an instance from this factory. Attributes can be individually overridden by passing in a Hash of attribute => value pairs.
Arguments:
name: Symbol
or String
The name of the factory
that should be used.
traits_and_overrides: Array
Traits to be applied
Hash
Attributes to overwrite for this instance.
block: Yields the built instance.
Returns: Object
An instance of the class this factory
generates, with generated attributes assigned.
# File lib/factory_girl/syntax/methods.rb, line 39 def build(name, *traits_and_overrides, &block) run_factory_girl_proxy(name, traits_and_overrides, Proxy::Build, &block) end
Builds and returns multiple instances from this factory as an array. Attributes can be individually overridden by passing in a Hash of attribute => value pairs.
Arguments:
name: Symbol
or String
The name of the factory to
be used.
amount: Integer
number of instances to be built.
overrides: Hash
Attributes to overwrite for each instance.
Returns: Array
An array of instances of the class this factory
generates, with generated attributes assigned.
# File lib/factory_girl/syntax/methods.rb, line 99 def build_list(name, amount, overrides = {}) amount.times.map { build(name, overrides) } end
Generates and returns an object with all attributes from this factory stubbed out. Attributes can be individually overridden by passing in a Hash of attribute => value pairs.
Arguments:
name: Symbol
or String
The name of the factory
that should be used.
traits_and_overrides: Array
Traits to be applied
Hash
Attributes to overwrite for this instance.
block Yields the stubbed object.
Returns: Object
An object with generated attributes stubbed
out.
# File lib/factory_girl/syntax/methods.rb, line 81 def build_stubbed(name, *traits_and_overrides, &block) run_factory_girl_proxy(name, traits_and_overrides, Proxy::Stub, &block) end
Generates, saves, and returns an instance from this factory. Attributes can be individually overridden by passing in a Hash of attribute => value pairs.
Instances are saved using the save!
method, so ActiveRecord models will raise
ActiveRecord::RecordInvalid exceptions for invalid attribute sets.
Arguments:
name: Symbol
or String
The name of the factory
that should be used.
traits_and_overrides: Array
Traits to be applied
Hash
Attributes to overwrite for this instance.
block: Yields the created instance.
Returns: Object
A saved instance of the class this factory
generates, with generated attributes assigned.
# File lib/factory_girl/syntax/methods.rb, line 62 def create(name, *traits_and_overrides, &block) run_factory_girl_proxy(name, traits_and_overrides, Proxy::Create, &block) end
Creates and returns multiple instances from this factory as an array. Attributes can be individually overridden by passing in a Hash of attribute => value pairs.
Arguments:
name: Symbol
or String
The name of the factory to
be used.
amount: Integer
number of instances to be created.
overrides: Hash
Attributes to overwrite for each instance.
Returns: Array
An array of instances of the class this factory
generates, with generated attributes assigned.
# File lib/factory_girl/syntax/methods.rb, line 117 def create_list(name, amount, overrides = {}) amount.times.map { create(name, overrides) } end
Generates and returns the next value in a sequence.
Arguments:
name: (Symbol) The name of the sequence that a value should be generated for.
Returns:
The next value in the sequence. (Object)
# File lib/factory_girl/syntax/methods.rb, line 129 def generate(name) FactoryGirl.sequence_by_name(name).next end
# File lib/factory_girl/syntax/methods.rb, line 135 def run_factory_girl_proxy(name, traits_and_overrides, proxy, &block) overrides = if traits_and_overrides.last.respond_to?(:has_key?) traits_and_overrides.pop else {} end factory = FactoryGirl.factory_by_name(name) if traits_and_overrides.any? factory = factory.with_traits(traits_and_overrides) end factory.run(proxy, overrides, &block) end