Class: FixtureReplacement::MethodGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/fixture_replacement/method_generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(builder, evaluation_module) ⇒ MethodGenerator

Returns a new instance of MethodGenerator.



3
4
5
6
# File 'lib/fixture_replacement/method_generator.rb', line 3

def initialize(builder, evaluation_module)
  @builder           = builder
  @evaluation_module = evaluation_module
end

Instance Method Details

#generate_methodsObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/fixture_replacement/method_generator.rb', line 8

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
  end
end