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