Module: FactoryGirl::Syntax::Methods

Included in:
Default
Defined in:
lib/factory_girl/syntax/methods.rb

Instance Method Summary collapse

Instance Method Details

#attributes_for(name, overrides = {}) ⇒ Object

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.

  • overrides: Hash Attributes to overwrite for this set.

Returns: Hash A set of attributes that can be used to build an instance of the class this factory generates.



17
18
19
# File 'lib/factory_girl/syntax/methods.rb', line 17

def attributes_for(name, overrides = {})
  FactoryGirl.factory_by_name(name).run(Proxy::AttributesFor, overrides)
end

#build(name, overrides = {}) ⇒ Object

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.

  • overrides: Hash Attributes to overwrite for this instance.

Returns: Object An instance of the class this factory generates, with generated attributes assigned.



33
34
35
# File 'lib/factory_girl/syntax/methods.rb', line 33

def build(name, overrides = {})
  FactoryGirl.factory_by_name(name).run(Proxy::Build, overrides)
end

#build_list(name, amount, overrides = {}) ⇒ Object

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.



87
88
89
# File 'lib/factory_girl/syntax/methods.rb', line 87

def build_list(name, amount, overrides = {})
  amount.times.map { build(name, overrides) }
end

#build_stubbed(name, overrides = {}) ⇒ Object

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.

  • overrides: Hash Attributes to overwrite for this instance.

Returns: Object An object with generated attributes stubbed out.



69
70
71
# File 'lib/factory_girl/syntax/methods.rb', line 69

def build_stubbed(name, overrides = {})
  FactoryGirl.factory_by_name(name).run(Proxy::Stub, overrides)
end

#create(name, overrides = {}) ⇒ Object

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.

  • overrides: Hash Attributes to overwrite for this instance.

Returns: Object A saved instance of the class this factory generates, with generated attributes assigned.



53
54
55
# File 'lib/factory_girl/syntax/methods.rb', line 53

def create(name, overrides = {})
  FactoryGirl.factory_by_name(name).run(Proxy::Create, overrides)
end

#create_list(name, amount, overrides = {}) ⇒ Object

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.



105
106
107
# File 'lib/factory_girl/syntax/methods.rb', line 105

def create_list(name, amount, overrides = {})
  amount.times.map { create(name, overrides) }
end

#generate(name) ⇒ Object

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)


117
118
119
# File 'lib/factory_girl/syntax/methods.rb', line 117

def generate(name)
  FactoryGirl.sequence_by_name(name).next
end