Sha256: 291246fb55d4cc219e01c8686e3dbc4d739272d674fd2170d397fd6d6dbc850a

Contents?: true

Size: 823 Bytes

Versions: 6

Compression:

Stored size: 823 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.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

6 entries across 6 versions & 1 rubygems

Version Path
factory_bot-4.11.1 lib/factory_bot/factory_runner.rb
factory_bot-4.11.0 lib/factory_bot/factory_runner.rb
factory_bot-4.10.0 lib/factory_bot/factory_runner.rb
factory_bot-4.8.2 lib/factory_bot/factory_runner.rb
factory_bot-1.0.1.alpha lib/factory_bot/factory_runner.rb
factory_bot-1.0.0.alpha lib/factory_bot/factory_runner.rb