Sha256: 260a09cbff7cd3f0a908d6365c75c8287d119403703c842e79025591fb024406

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

module FixtureReplacement
  class MethodGenerator
    def initialize(builder, evaluation_module)
      @builder           = builder
      @evaluation_module = evaluation_module
    end

    def generate_methods
      builder       = @builder
      builder_name  = builder.fixture_name

      @evaluation_module.module_eval do
        define_method("valid_#{builder_name}_attributes") do |*args|
          obj = __send__ "new_#{builder_name}"
          obj.attributes
        end

        define_method("create_#{builder_name}") do |*args|
          obj = __send__("new_#{builder_name}", *args)
          obj.save!
          obj
        end

        define_method("new_#{builder_name}") do |*args|
          new_object = builder.instantiate(*args)
        end

        define_method("default_#{builder_name}") do |*args|
          warning = "default_#{builder_name} has been deprecated. "
          warning << "Please replace instances of default_#{builder_name} with the new_#{builder_name} method"
          Kernel.warn(warning)

          __send__ "new_#{builder_name}"
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fixture_replacement-4.0.1 lib/fixture_replacement/method_generator.rb
fixture_replacement-4.0.0 lib/fixture_replacement/method_generator.rb
fixture_replacement-3.0.1 lib/fixture_replacement/method_generator.rb