Class: Pretentious::MinitestGenerator

Inherits:
GeneratorBase show all
Defined in:
lib/pretentious/minitest_generator.rb

Instance Method Summary collapse

Methods inherited from GeneratorBase

#buffer, #buffer_inline

Constructor Details

#initialize(options = {}) ⇒ MinitestGenerator

Returns a new instance of MinitestGenerator.



3
4
5
6
7
8
9
10
11
# File 'lib/pretentious/minitest_generator.rb', line 3

def initialize(options = {})
  @deconstructor = Pretentious::Deconstructor.new
  indentation_count = options[:indentation] || 2
  @output_buffer = ""
  @_indentation = ""
  indentation_count.times do
    @_indentation << " "
  end
end

Instance Method Details

#begin_spec(test_class) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/pretentious/minitest_generator.rb', line 25

def begin_spec(test_class)
  @test_class = test_class
  buffer("#This file was automatically generated by the pretentious gem")
  buffer("require 'minitest_helper'")
  buffer('require "minitest/autorun"')
  whitespace
  buffer("class Test#{test_class.name} < Minitest::Test")
  buffer("end")
  whitespace
end

#end_specObject



36
37
# File 'lib/pretentious/minitest_generator.rb', line 36

def end_spec
end

#generate(test_instance, instance_count) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/pretentious/minitest_generator.rb', line 43

def generate(test_instance, instance_count)
  if (test_instance.is_a? Class)
    #class methods
    class_method_calls = test_instance.method_calls_by_method
    generate_specs("#{test_instance.test_class.name}::",test_instance.test_class.name, class_method_calls, test_instance.let_variables)
  else
    buffer("class #{test_instance.test_class.name}Scenario#{instance_count} < Test#{@test_class.name}",0)

    buffer("def setup",1)
    buffer_inline(test_instance._deconstruct_to_ruby('@fixture', 2 * @_indentation.length))
    buffer("end", 1)
    whitespace

    method_calls = test_instance.method_calls_by_method

    generate_specs("#{test_instance.test_class.name}#","@fixture",method_calls, test_instance.let_variables)

    buffer('end',0)
    whitespace
  end

end

#indentation(level) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/pretentious/minitest_generator.rb', line 13

def indentation(level)
  buffer = ""
  level.times do
    buffer << @_indentation
  end
  buffer
end

#outputObject



39
40
41
# File 'lib/pretentious/minitest_generator.rb', line 39

def output
  @output_buffer
end

#whitespace(level = 0) ⇒ Object



21
22
23
# File 'lib/pretentious/minitest_generator.rb', line 21

def whitespace(level = 0)
  @output_buffer << "#{indentation(level)}\n"
end