Class: RSpecTelemetry::Summary

Inherits:
Object
  • Object
show all
Defined in:
lib/rspec_telemetry/summary.rb

Defined Under Namespace

Classes: ExampleStat

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Summary

Returns a new instance of Summary.



16
17
18
19
20
# File 'lib/rspec_telemetry/summary.rb', line 16

def initialize(config)
  @config = config
  @factory_acc = FactoryAggregation::Accumulator.new
  @examples = {}
end

Instance Method Details

#add(event) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/rspec_telemetry/summary.rb', line 22

def add(event)
  case event[:type]
  when "factory_bot.run_factory"
    add_factory(event)
  when "example.finished"
    add_example(event)
  end
end

#examplesObject



35
36
37
# File 'lib/rspec_telemetry/summary.rb', line 35

def examples
  @examples.values
end

#factoriesObject



31
32
33
# File 'lib/rspec_telemetry/summary.rb', line 31

def factories
  @factory_acc.stats
end

#slow_examples(limit = @config.summary_limit) ⇒ Object



43
44
45
46
47
48
# File 'lib/rspec_telemetry/summary.rb', line 43

def slow_examples(limit = @config.summary_limit)
  sorted = examples.sort_by { |e| -e.duration_ms.to_f }
  threshold = @config.slow_example_threshold_ms
  sorted = sorted.select { |e| e.duration_ms.to_f >= threshold } if threshold
  sorted.first(limit)
end

#top_factories(limit = @config.summary_limit) ⇒ Object



39
40
41
# File 'lib/rspec_telemetry/summary.rb', line 39

def top_factories(limit = @config.summary_limit)
  @factory_acc.top(limit)
end