class MR::Factory::RecordStack::AssociationData
Attributes
association[R]
preset_record_data[R]
Public Class Methods
new(association)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 137 def initialize(association) @association = association preset_record = association.owner.send("#{self.name}") @preset_record_data = RecordData.new(preset_record) if preset_record end
Public Instance Methods
<=>(other)
click to toggle source
Calls superclass method
# File lib/mr/factory/record_stack.rb, line 172 def <=>(other) if other.kind_of?(self.class) self.name.to_s <=> other.name.to_s else super end end
get_record_data(factory_config, lookup)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 162 def get_record_data(factory_config, lookup) if self.preset? self.preset_record_data elsif (lookup_record_data = get_lookup_record_data(factory_config, lookup)) lookup_record_data else RecordData.new(build_record(factory_config)) end end
name()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 144 def name self.association.reflection.name end
preset?()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 152 def preset? !self.preset_record_data.nil? end
record_class()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 148 def record_class self.association.klass end
required?(factory_config)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 156 def required?(factory_config) self.preset? || factory_config.force_in_stack_association?(self.name) || columns_required?(self.association) end
Private Instance Methods
build_record(factory_config)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 199 def build_record(factory_config) factory_config.build_associated_record(self.name, self.record_class) rescue NoRecordClassError raise NoRecordClassError.for_association(self.association) end
column_required?(record, column_name)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 210 def column_required?(record, column_name) column = record.column_for_attribute(column_name) !(column.nil? || column.null) end
columns_required?(association)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 205 def columns_required?(association) column_required?(association.owner, association.reflection.foreign_key) || column_required?(association.owner, association.reflection.foreign_type) end
get_lookup_record_data(factory_config, lookup)
click to toggle source
get the intersection of the record classes and use a random match to get a record data from the lookup; if their are no matching record classes the intersection returns an empty array which will return a `nil` value from the lookup
# File lib/mr/factory/record_stack.rb, line 186 def get_lookup_record_data(factory_config, lookup) record_classes = lookup_record_classes(factory_config) & lookup.keys lookup[record_classes.sample] end
lookup_record_classes(factory_config)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 191 def lookup_record_classes(factory_config) if self.record_class [self.record_class] else factory_config.record_classes_for(self.name) end end