class FactoryGirl::StrategySyntaxMethodRegistrar

@api private

Public Class Methods

new(strategy_name) click to toggle source
# File lib/factory_girl/strategy_syntax_method_registrar.rb, line 4
def initialize(strategy_name)
  @strategy_name = strategy_name
end

Public Instance Methods

define_strategy_methods() click to toggle source
# File lib/factory_girl/strategy_syntax_method_registrar.rb, line 8
def define_strategy_methods
  define_singular_strategy_method
  define_list_strategy_method
  define_pair_strategy_method
end

Private Instance Methods

define_list_strategy_method() click to toggle source
# File lib/factory_girl/strategy_syntax_method_registrar.rb, line 24
def define_list_strategy_method
  strategy_name = @strategy_name

  define_syntax_method("#{strategy_name}_list") do |name, amount, *traits_and_overrides, &block|
    amount.times.map { send(strategy_name, name, *traits_and_overrides, &block) }
  end
end
define_pair_strategy_method() click to toggle source
# File lib/factory_girl/strategy_syntax_method_registrar.rb, line 32
def define_pair_strategy_method
  strategy_name = @strategy_name

  define_syntax_method("#{strategy_name}_pair") do |name, *traits_and_overrides, &block|
    2.times.map { send(strategy_name, name, *traits_and_overrides, &block) }
  end
end
define_singular_strategy_method() click to toggle source
# File lib/factory_girl/strategy_syntax_method_registrar.rb, line 16
def define_singular_strategy_method
  strategy_name = @strategy_name

  define_syntax_method(strategy_name) do |name, *traits_and_overrides, &block|
    FactoryRunner.new(name, strategy_name, traits_and_overrides).run(&block)
  end
end
define_syntax_method(name, &block) click to toggle source
# File lib/factory_girl/strategy_syntax_method_registrar.rb, line 40
def define_syntax_method(name, &block)
  FactoryGirl::Syntax::Methods.module_exec do
    if method_defined?(name) || private_method_defined?(name)
      undef_method(name)
    end

    define_method(name, &block)
  end
end