Class: FactoryBotVariants::VariantAttributes

Inherits:
Object
  • Object
show all
Defined in:
lib/factory_bot_variants/variant_attributes.rb

Class Method Summary collapse

Class Method Details

.map(attributes) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/factory_bot_variants/variant_attributes.rb', line 3

def self.map(attributes)
  variants = []

  common_attributes = attributes.delete(:all)

  attributes.each do |attr_name, attr_values|
    singular_attr_name = attr_name.to_s.singularize.to_sym

    attr_values.each_with_index do |attr_value, index|
      variants[index] ||= {}
      variants[index][singular_attr_name] = attr_value
    end
  end

  if common_attributes
    variants.each { |variant| variant.merge!(common_attributes) }
  end

  variants
end