Class: FactoryTrace::Structures::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/factory_trace/structures/collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(factories = {}, traits = {}) ⇒ Collection

Returns a new instance of Collection.

Parameters:



8
9
10
11
# File 'lib/factory_trace/structures/collection.rb', line 8

def initialize(factories = {}, traits = {})
  @factories = factories
  @traits = traits
end

Instance Attribute Details

#factoriesObject (readonly)

Returns the value of attribute factories.



4
5
6
# File 'lib/factory_trace/structures/collection.rb', line 4

def factories
  @factories
end

#traitsObject (readonly)

Returns the value of attribute traits.



4
5
6
# File 'lib/factory_trace/structures/collection.rb', line 4

def traits
  @traits
end

Instance Method Details

#==(collection) ⇒ Boolean

Returns:

  • (Boolean)


60
61
62
63
64
# File 'lib/factory_trace/structures/collection.rb', line 60

def ==(collection)
  return false unless collection.is_a?(FactoryTrace::Structures::Collection)

  factories == collection.factories && traits == collection.traits
end

#add(element) ⇒ FactoryTrace::Structures::Factory, FactoryTrace::Structures::Trait



16
17
18
19
20
21
22
23
# File 'lib/factory_trace/structures/collection.rb', line 16

def add(element)
  case element
  when FactoryTrace::Structures::Factory then store(factories, element)
  when FactoryTrace::Structures::Trait then store(traits, element)
  else
    fail "Unknown element: #{element.inspect}"
  end
end

#merge!(collection) ⇒ FactoryTrace::Structures::Collection

Merge passed collection into self



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/factory_trace/structures/collection.rb', line 30

def merge!(collection)
  collection.factories.each_value do |factory|
    if factories[factory.name]
      factories[factory.name].merge!(factory)
    else
      add(FactoryTrace::Structures::Factory.new(factory.name, factory.parent_name, factory.trait_names))
    end
  end

  collection.traits.each_value do |trait|
    add(FactoryTrace::Structures::Trait.new(trait.name, trait.owner_name)) unless traits[trait.name]
  end
end

#to_hHash

Returns:

  • (Hash)


45
46
47
48
49
50
# File 'lib/factory_trace/structures/collection.rb', line 45

def to_h
  {
    factories: convert(factories),
    traits: convert(traits)
  }
end

#totalInteger

Total number of factories and traits

Returns:

  • (Integer)


55
56
57
# File 'lib/factory_trace/structures/collection.rb', line 55

def total
  traits.size + factories.size + factories.values.sum { |factory| factory.trait_names.size }
end