Sha256: 41bab754c50f638640a285a51e432999e5d7238f2efcb6ef4427a1344ac9175e

Contents?: true

Size: 834 Bytes

Versions: 4

Compression:

Stored size: 834 Bytes

Contents

module FactoryBot
  class FactoryRunner
    def initialize(name, strategy, traits_and_overrides)
      @name     = name
      @strategy = strategy

      @overrides = traits_and_overrides.extract_options!
      @traits    = traits_and_overrides
    end

    def run(runner_strategy = @strategy, &block)
      factory = FactoryBot::Internal.factory_by_name(@name)

      factory.compile

      if @traits.any?
        factory = factory.with_traits(@traits)
      end

      instrumentation_payload = {
        name: @name,
        strategy: runner_strategy,
        traits: @traits,
        overrides: @overrides,
        factory: factory,
      }

      ActiveSupport::Notifications.instrument("factory_bot.run_factory", instrumentation_payload) do
        factory.run(runner_strategy, @overrides, &block)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
factory_bot-5.2.0 lib/factory_bot/factory_runner.rb
factory_bot-5.1.2 lib/factory_bot/factory_runner.rb
factory_bot-5.1.1 lib/factory_bot/factory_runner.rb
factory_bot-5.1.0 lib/factory_bot/factory_runner.rb