Module: FactoryGirl::DependencyTree
- Defined in:
- lib/factory_girl/dependency_tree.rb,
lib/factory_girl/dependency_tree/version.rb
Constant Summary collapse
- VERSION =
"0.0.1"
Class Method Summary collapse
-
.analyze! ⇒ Object
Example method for kicking off a sample dependency analysis You should load your environment before calling this (e.g. use ‘rails runner`).
- .forest ⇒ Object
- .record(name) ⇒ Object
Class Method Details
.analyze! ⇒ Object
Example method for kicking off a sample dependency analysis You should load your environment before calling this (e.g. use ‘rails runner`)
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/factory_girl/dependency_tree.rb', line 18 def analyze! # Install FactoryGirl.singleton_class.prepend(FactoryGirl::DependencyTree) # Run FactoryGirl.find_definitions if FactoryGirl.factories.none? FactoryGirl.factories.map(&:name).each do |f| begin FactoryGirl.create(f) rescue => e puts "Couldn't analyze factory #{f} due to #{e}" end end # Report puts "Printing the dependency tree of each FactoryGirl factory..." FactoryGirl::DependencyTree.forest.each do |t| t.print_tree(t.node_depth, nil, -> (n, pre) { puts "#{pre} #{n.content}" }) end puts '***' puts "Printing the FactoryGirl factories with more than one call to another single factory..." FactoryGirl::DependencyTree.forest.each do |tree| children = tree.each.to_a[1..-1] child_counts = children.map(&:content).reduce(Hash.new(0)) {|c,n| c[n] += 1; c} puts "===\n#{tree.content}\n#{child_counts}" if child_counts.values.any? {|v| v > 1} end end |
.forest ⇒ Object
63 64 65 |
# File 'lib/factory_girl/dependency_tree.rb', line 63 def forest @forest ||= [] end |
.record(name) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/factory_girl/dependency_tree.rb', line 48 def record(name) if @node node = Tree::TreeNode.new(SecureRandom.uuid, name) @node << node @node = node else @node = Tree::TreeNode.new(SecureRandom.uuid, name) forest << @node end yield.tap { @node = @node.parent } rescue => e @node = nil raise e end |