Sha256: bd865f993cc17fb1ae2fe0bfb3009d23f3ddee0f59d007a015cb70935dbcea24

Contents?: true

Size: 950 Bytes

Versions: 1

Compression:

Stored size: 950 Bytes

Contents

# frozen_string_literal: true

require "active_support/notifications"

require_relative "factory_bot_profile/version"
require_relative "factory_bot_profile/aggregate_stats"
require_relative "factory_bot_profile/subscriber"
require_relative "factory_bot_profile/subscription"
require_relative "factory_bot_profile/report/simple_report"

module FactoryBotProfile
  def self.reporting
    subscription = subscribe
    result = yield
    report(subscription.stats)
    result
  ensure
    subscription.unsubscribe
  end

  def self.subscribe(stats = AggregateStats.new)
    Subscription.new(stats).subscribe
  end

  def self.report(stats, reporter: Report::SimpleReport, io: $stdout)
    reporter.new(stats, io: io).deliver if stats
  end

  def self.merge_and_report(all_stats, reporter: Report::SimpleReport, io: $stdout)
    merged_stats = all_stats.reduce(AggregateStats.new, &:merge!)
    report(merged_stats, reporter: reporter, io: io)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
factory_bot_profile-0.1.0 lib/factory_bot_profile.rb