class FactoryGirl::AttributeList
Public Class Methods
new(name = nil)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 5 def initialize(name = nil) @name = name @attributes = [] end
Public Instance Methods
apply_attributes(attributes_to_apply)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 21 def apply_attributes(attributes_to_apply) attributes_to_apply.each do |attribute| new_attribute = find_attribute(attribute.name) || attribute delete_attribute(attribute.name) add_attribute new_attribute end end
define_attribute(attribute)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 10 def define_attribute(attribute) ensure_attribute_not_self_referencing! attribute ensure_attribute_not_defined! attribute add_attribute attribute end
each(&block)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 17 def each(&block) @attributes.each(&block) end
Private Instance Methods
add_attribute(attribute)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 32 def add_attribute(attribute) @attributes << attribute attribute end
attribute_defined?(attribute_name)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 49 def attribute_defined?(attribute_name) !!find_attribute(attribute_name) end
delete_attribute(attribute_name)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 59 def delete_attribute(attribute_name) @attributes.delete_if {|attrib| attrib.name == attribute_name } end
ensure_attribute_not_defined!(attribute)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 37 def ensure_attribute_not_defined!(attribute) if attribute_defined?(attribute.name) raise AttributeDefinitionError, "Attribute already defined: #{attribute.name}" end end
ensure_attribute_not_self_referencing!(attribute)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 43 def ensure_attribute_not_self_referencing!(attribute) if attribute.respond_to?(:factory) && attribute.factory == @name raise AssociationDefinitionError, "Self-referencing association '#{attribute.name}' in '#{attribute.factory}'" end end
find_attribute(attribute_name)
click to toggle source
# File lib/factory_girl/attribute_list.rb, line 53 def find_attribute(attribute_name) @attributes.detect do |attribute| attribute.name == attribute_name end end