Module: FactoryTrace

Defined in:
lib/factory_trace.rb,
lib/factory_trace/tracker.rb,
lib/factory_trace/version.rb,
lib/factory_trace/configuration.rb,
lib/factory_trace/helpers/caller.rb,
lib/factory_trace/writers/writer.rb,
lib/factory_trace/fixture_tracker.rb,
lib/factory_trace/structures/trait.rb,
lib/factory_trace/helpers/converter.rb,
lib/factory_trace/helpers/statusable.rb,
lib/factory_trace/monkey_patches/dsl.rb,
lib/factory_trace/structures/factory.rb,
lib/factory_trace/monkey_patches/trait.rb,
lib/factory_trace/readers/trace_reader.rb,
lib/factory_trace/writers/trace_writer.rb,
lib/factory_trace/structures/collection.rb,
lib/factory_trace/writers/report_writer.rb,
lib/factory_trace/monkey_patches/factory.rb,
lib/factory_trace/processors/find_unused.rb,
lib/factory_trace/preprocessors/extract_used.rb,
lib/factory_trace/monkey_patches/monkey_patches.rb,
lib/factory_trace/preprocessors/extract_defined.rb,
lib/factory_trace/monkey_patches/definition_proxy.rb,
lib/factory_trace/preprocessors/extract_defined_fixtures.rb

Defined Under Namespace

Modules: Helpers, MonkeyPatches, Preprocessors, Processors, Readers, Structures, Writers Classes: Configuration, FixtureTracker, Tracker

Constant Summary collapse

VERSION =
"3.0.1"

Class Method Summary collapse

Class Method Details

.configurationObject



79
80
81
# File 'lib/factory_trace.rb', line 79

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



75
76
77
# File 'lib/factory_trace.rb', line 75

def configure
  yield(configuration)
end

.factory_bot_registerObject



83
84
85
# File 'lib/factory_trace.rb', line 83

def factory_bot_register
  @factory_bot_register ||= (FactoryBot::VERSION >= "5.1.0") ? FactoryBot::Internal : FactoryBot
end

.mix(fixtures, factory_bot) ⇒ Object



68
69
70
71
72
73
# File 'lib/factory_trace.rb', line 68

def mix(fixtures, factory_bot)
  {}.tap do |result|
    result[:fixtures] = fixtures.to_h if fixtures?
    result[:factory_bot] = factory_bot.to_h if factory_bot?
  end
end

.startObject



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

def start
  return unless configuration.enabled
  trace_definitions! if configuration.trace_definition?

  tracker.track! if factory_bot?
  fixture_tracker.track! if fixtures?
end

.stopObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/factory_trace.rb', line 52

def stop
  return unless configuration.enabled

  # This is required to exclude parent traits from +defined_traits+
  FactoryBot.reload if factory_bot?

  if configuration.mode?(:full)
    writer = Writers::ReportWriter.new(configuration.out, configuration)
    writer.write(Processors::FindUnused.call(defined, used), kind: :factory_bot) if factory_bot?
    writer.write(Processors::FindUnused.call(defined_fixtures, used_fixtures), kind: :fixtures) if fixtures?
  elsif configuration.mode?(:trace_only)
    writer = Writers::TraceWriter.new(configuration.out, configuration)
    writer.write(mix(defined_fixtures, defined), mix(used_fixtures, used))
  end
end