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.



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

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

Instance Method Details

#add(event) ⇒ Object



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

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

#examplesObject



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

def examples
  @examples.values
end

#factoriesObject



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

def factories
  @factory_acc.stats
end

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



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

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



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

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