pretentious 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/ddtgen +12 -8
- data/example.rb +7 -1
- data/lib/pretentious.rb +8 -6
- data/lib/pretentious/deconstructor.rb +70 -15
- data/lib/pretentious/generator.rb +19 -11
- data/lib/pretentious/generator_base.rb +13 -0
- data/lib/pretentious/minitest_generator.rb +4 -34
- data/lib/pretentious/rspec_generator.rb +9 -38
- data/lib/pretentious/version.rb +1 -1
- data/pretentious.gemspec +1 -0
- data/spec/deconstructor_spec.rb +40 -7
- data/spec/fibonacci_spec.rb +0 -4
- data/spec/generator_spec.rb +69 -0
- data/spec/m_d5_spec.rb +0 -1
- data/spec/minitest_generator_spec.rb +1 -1
- data/spec/prententious_spec.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- data/spec/test_class1_spec.rb +13 -22
- data/spec/test_class2_spec.rb +27 -5
- data/spec/test_class3_spec.rb +11 -22
- data/spec/test_class4_spec.rb +5 -8
- data/spec/test_class_for_auto_stub_spec.rb +1 -4
- data/spec/test_class_for_mocks_spec.rb +5 -10
- data/test/test_generator.rb +1 -1
- data/test/test_meme.rb +1 -2
- data/test/test_test_class1.rb +14 -19
- data/test/test_test_class2.rb +29 -3
- data/test/test_test_class3.rb +12 -20
- data/test/test_test_class4.rb +5 -6
- data/test/test_test_class_for_mocks.rb +6 -8
- data/test_classes.rb +9 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8025fc11bf85286be01fb1bde220c64e7cc49c54
|
4
|
+
data.tar.gz: ede071633cf959eb97125c7c173f445d406de366
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d02f840b1b06223fc6cfcd6df9a5552fe698a08815b4c7a0b86adfd83e539085fe27d1551d05aca9e9521801b6a56dc3f10333b9ce9793efdb76192e0f7ba04
|
7
|
+
data.tar.gz: 6d73531a5d43c9b34d6094e10931c63d7feb0cf2efb1b884206bfc34cbf81d83d8a720e3203e1bdefa28586d9697ae9d836a6bd8297f981e6c0e5e1353e23d4d
|
data/bin/ddtgen
CHANGED
@@ -47,14 +47,18 @@ module DdtUtils
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
result
|
54
|
-
|
55
|
-
|
56
|
-
|
50
|
+
|
51
|
+
Pretentious.last_results.each { |g, result_per_generator|
|
52
|
+
puts "#{g}:"
|
53
|
+
result_per_generator.each { |klass, result|
|
54
|
+
output_folder = result[:generator].location(output_folder)
|
55
|
+
FileUtils.mkdir_p output_folder
|
56
|
+
result[:generator].helper(output_folder)
|
57
|
+
filename = result[:generator].naming(output_folder, klass)
|
58
|
+
File.open(filename, 'w') {
|
59
|
+
|f| f.write(result[:output])
|
60
|
+
}
|
61
|
+
puts "#{filename}"
|
57
62
|
}
|
58
|
-
puts "#{filename}"
|
59
63
|
}
|
60
64
|
|
data/example.rb
CHANGED
@@ -22,7 +22,7 @@ end
|
|
22
22
|
another_object = TestClass1.new("test")
|
23
23
|
test_class_one = TestClass1.new({hello: "world", test: another_object, arr_1: [1,2,3,4,5, another_object],
|
24
24
|
sub_hash: {yes: true, obj: another_object}})
|
25
|
-
test_class_two = TestClass2.new("This is message 2")
|
25
|
+
test_class_two = TestClass2.new("This is message 2", nil)
|
26
26
|
|
27
27
|
class_to_test = TestClass3.new(test_class_one, test_class_two)
|
28
28
|
class_to_test.show_messages
|
@@ -42,6 +42,12 @@ end
|
|
42
42
|
class_to_test4.message
|
43
43
|
}
|
44
44
|
|
45
|
+
message3 = "This is message 3"
|
46
|
+
t = TestClass2.new(message3, nil)
|
47
|
+
test_class_two = TestClass2.new(t, message3)
|
48
|
+
test_class_two.test(message3)
|
49
|
+
|
50
|
+
|
45
51
|
begin
|
46
52
|
test_class_one.something_is_wrong
|
47
53
|
rescue Exception=>e
|
data/lib/pretentious.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "pretentious/version"
|
2
|
+
require "pretentious/generator_base"
|
2
3
|
require "pretentious/rspec_generator"
|
3
4
|
require "pretentious/minitest_generator"
|
4
5
|
require "pretentious/recorded_proc"
|
@@ -43,23 +44,24 @@ end
|
|
43
44
|
module Pretentious
|
44
45
|
|
45
46
|
def self.spec_for(*klasses, &block)
|
46
|
-
@
|
47
|
+
@spec_results ||= {}
|
47
48
|
Pretentious::Generator.test_generator = Pretentious::RspecGenerator
|
48
|
-
@
|
49
|
+
@spec_results.merge!(Pretentious::Generator.generate_for(*klasses, &block))
|
49
50
|
end
|
50
51
|
|
51
52
|
def self.minitest_for(*klasses, &block)
|
52
|
-
@
|
53
|
+
@minitest_results ||= {}
|
53
54
|
Pretentious::Generator.test_generator = Pretentious::MinitestGenerator
|
54
|
-
@
|
55
|
+
@minitest_results.merge!(Pretentious::Generator.generate_for(*klasses, &block))
|
55
56
|
end
|
56
57
|
|
57
58
|
def self.clear_results
|
58
|
-
@
|
59
|
+
@spec_results = {}
|
60
|
+
@minitest_results = {}
|
59
61
|
end
|
60
62
|
|
61
63
|
def self.last_results
|
62
|
-
@
|
64
|
+
{spec: @spec_results, minitest: @minitest_results}
|
63
65
|
end
|
64
66
|
|
65
67
|
def self.install_watcher
|
@@ -57,7 +57,7 @@ class Pretentious::Deconstructor
|
|
57
57
|
def dfs(tree)
|
58
58
|
if !tree.is_a? Hash
|
59
59
|
value = tree
|
60
|
-
definition = {id: value.object_id, class: tree.class, value: value}
|
60
|
+
definition = {id: value.object_id, class: tree.class, value: value, used_by: []}
|
61
61
|
unless (@dependencies.include? value.object_id)
|
62
62
|
@dependencies[value.object_id] = definition
|
63
63
|
@declaration_order << definition
|
@@ -66,7 +66,7 @@ class Pretentious::Deconstructor
|
|
66
66
|
else
|
67
67
|
ref = []
|
68
68
|
|
69
|
-
definition = {id: tree[:id], class: tree[:class]}
|
69
|
+
definition = {id: tree[:id], class: tree[:class], params_types: tree[:params_types], used_by: []}
|
70
70
|
|
71
71
|
if tree[:class] == Hash
|
72
72
|
definition[:value] = dfs_hash(tree[:composition], ref)
|
@@ -99,11 +99,41 @@ class Pretentious::Deconstructor
|
|
99
99
|
unless (@dependencies.include? tree[:id])
|
100
100
|
@declaration_order << definition
|
101
101
|
@dependencies[tree[:id]] = definition
|
102
|
+
|
103
|
+
ref.each { |r|
|
104
|
+
@dependencies[r][:used_by] << definition
|
105
|
+
}
|
102
106
|
end
|
107
|
+
|
103
108
|
tree[:id]
|
104
109
|
end
|
105
110
|
end
|
106
111
|
|
112
|
+
def update_ref_counts(params_arr, method_call)
|
113
|
+
params_arr.each do |p|
|
114
|
+
if (@dependencies.include? p.object_id)
|
115
|
+
@dependencies[p.object_id][:used_by] << method_call
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def inline
|
121
|
+
@dependencies.each { |id, definition|
|
122
|
+
if (definition[:used_by].size == 1)
|
123
|
+
if (definition.include?(:value) && self.class.is_primitive?(definition[:value]))
|
124
|
+
ref = definition[:used_by][0]
|
125
|
+
definition[:used_by] = :inline
|
126
|
+
references = ref[:ref]
|
127
|
+
if (references)
|
128
|
+
new_ref = references.collect { |c| c == id ? definition : c}
|
129
|
+
ref[:ref] = new_ref
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
}
|
135
|
+
end
|
136
|
+
|
107
137
|
#creates a tree on how the object was created
|
108
138
|
def build_tree(target_object)
|
109
139
|
tree = {class: get_test_class(target_object), id: target_object.object_id, composition: []}
|
@@ -119,15 +149,15 @@ class Pretentious::Deconstructor
|
|
119
149
|
tree[:block_params] = self.class.block_param_names(target_object)
|
120
150
|
elsif target_object.methods.include? :_get_init_arguments
|
121
151
|
args = target_object._get_init_arguments
|
122
|
-
|
123
152
|
unless args.nil?
|
124
|
-
|
153
|
+
tree[:params_types] = args[:params_types]
|
125
154
|
args[:params].each { |p|
|
126
155
|
tree[:composition] << build_tree(p)
|
127
156
|
}
|
128
157
|
|
129
158
|
tree[:block] = build_tree(args[:block]) unless args[:block].nil?
|
130
159
|
else
|
160
|
+
|
131
161
|
if (self.class.is_primitive?(target_object))
|
132
162
|
tree[:composition] = target_object
|
133
163
|
elsif (target_object.class == File)
|
@@ -144,7 +174,7 @@ class Pretentious::Deconstructor
|
|
144
174
|
end
|
145
175
|
|
146
176
|
|
147
|
-
def deconstruct(*target_objects)
|
177
|
+
def deconstruct(method_call_collection, *target_objects)
|
148
178
|
|
149
179
|
@declaration_order = []
|
150
180
|
@dependencies = {}
|
@@ -154,10 +184,16 @@ class Pretentious::Deconstructor
|
|
154
184
|
dfs(tree)
|
155
185
|
}
|
156
186
|
|
187
|
+
method_call_collection.each do |m|
|
188
|
+
update_ref_counts(m[:params], m)
|
189
|
+
end
|
190
|
+
|
191
|
+
inline
|
192
|
+
|
157
193
|
{declaration: @declaration_order, dependency: @dependencies}
|
158
194
|
end
|
159
195
|
|
160
|
-
def deconstruct_to_ruby(indentation_level = 0, variable_map = {}, declared_names = {}, *target_objects)
|
196
|
+
def deconstruct_to_ruby(indentation_level = 0, variable_map = {}, declared_names = {}, method_call_collection = [], *target_objects)
|
161
197
|
output_buffer = ""
|
162
198
|
indentation = ""
|
163
199
|
|
@@ -168,12 +204,13 @@ class Pretentious::Deconstructor
|
|
168
204
|
target_objects.each { |target_object|
|
169
205
|
variable_map.merge!(target_object._variable_map) if target_object.methods.include?(:_variable_map) && !target_object._variable_map.nil?
|
170
206
|
}
|
171
|
-
declarations, dependencies = deconstruct *target_objects
|
172
|
-
declarations[:declaration].each do |d|
|
173
|
-
|
174
|
-
var_name = Pretentious::Deconstructor.pick_name(variable_map, d[:id], declared_names)
|
175
|
-
output_buffer << "#{indentation}#{var_name} = #{construct(d, variable_map, declared_names, indentation)}\n"
|
207
|
+
declarations, dependencies = deconstruct method_call_collection, *target_objects
|
176
208
|
|
209
|
+
declarations[:declaration].each do |d|
|
210
|
+
unless d[:used_by] == :inline
|
211
|
+
var_name = Pretentious::Deconstructor.pick_name(variable_map, d[:id], declared_names)
|
212
|
+
output_buffer << "#{indentation}#{var_name} = #{construct(d, variable_map, declared_names, indentation)}\n"
|
213
|
+
end
|
177
214
|
end
|
178
215
|
|
179
216
|
output_buffer
|
@@ -272,7 +309,7 @@ class Pretentious::Deconstructor
|
|
272
309
|
object_id_to_declared_names = {}
|
273
310
|
|
274
311
|
declared_names.each { |k,v|
|
275
|
-
object_id_to_declared_names[v[:object_id]] = k
|
312
|
+
object_id_to_declared_names[v[:object_id]] = k if v
|
276
313
|
} if declared_names
|
277
314
|
|
278
315
|
#return immediately if already mapped
|
@@ -281,7 +318,6 @@ class Pretentious::Deconstructor
|
|
281
318
|
if (!variable_map.nil? && variable_map.include?(object_id))
|
282
319
|
|
283
320
|
candidate_name = variable_map[object_id].to_s
|
284
|
-
|
285
321
|
if !declared_names.include?(candidate_name)
|
286
322
|
var_name = candidate_name
|
287
323
|
declared_names[candidate_name] = {count: 1, object_id: object_id}
|
@@ -369,8 +405,27 @@ class Pretentious::Deconstructor
|
|
369
405
|
else
|
370
406
|
params = []
|
371
407
|
if (definition[:ref] && definition[:ref].size > 0)
|
372
|
-
|
373
|
-
|
408
|
+
|
409
|
+
i = 0
|
410
|
+
params_types = definition[:params_types]
|
411
|
+
definition[:ref].each_with_index do |v, index|
|
412
|
+
|
413
|
+
type = :param
|
414
|
+
if (params_types)
|
415
|
+
type = params_types[index][0]
|
416
|
+
i+=1
|
417
|
+
end
|
418
|
+
|
419
|
+
#to inline?
|
420
|
+
if (v.is_a? Hash)
|
421
|
+
params << Pretentious::value_ize(v[:value], variable_map, declared_names)
|
422
|
+
else
|
423
|
+
if (type == :block)
|
424
|
+
params << "&#{Pretentious::Deconstructor.pick_name(variable_map, v, declared_names)}"
|
425
|
+
else
|
426
|
+
params << Pretentious::Deconstructor.pick_name(variable_map, v, declared_names)
|
427
|
+
end
|
428
|
+
end
|
374
429
|
end
|
375
430
|
"#{definition[:class]}.new(#{params.join(', ')})"
|
376
431
|
else
|
@@ -40,12 +40,13 @@ module Pretentious
|
|
40
40
|
|
41
41
|
def initialize(*args, &block)
|
42
42
|
|
43
|
-
@_instance_init = {params: [], block: nil}
|
43
|
+
@_instance_init = {object_id: self.object_id, params: [], block: nil}
|
44
44
|
|
45
45
|
self.class.replace_procs_with_recorders(args)
|
46
46
|
|
47
47
|
@_instance_init[:params] = args
|
48
48
|
|
49
|
+
|
49
50
|
recordedProc = if (block)
|
50
51
|
RecordedProc.new(block, true)
|
51
52
|
else
|
@@ -55,7 +56,9 @@ module Pretentious
|
|
55
56
|
@_instance_init[:block] = recordedProc
|
56
57
|
|
57
58
|
setup_instance(*args, &recordedProc)
|
58
|
-
|
59
|
+
param_types = @_instance.method(:initialize).parameters
|
60
|
+
puts "#{@_instance.class.name} params -> #{param_types.inspect}"
|
61
|
+
@_instance_init[:params_types] = param_types
|
59
62
|
|
60
63
|
@_method_calls = []
|
61
64
|
@_method_calls_by_method = {}
|
@@ -73,6 +76,10 @@ module Pretentious
|
|
73
76
|
@_init_let_variables[variable_value.object_id] = v
|
74
77
|
}
|
75
78
|
|
79
|
+
args.each_with_index { |a, index|
|
80
|
+
@_init_let_variables[a.object_id] = param_types[index][1].to_s if param_types.size == 2
|
81
|
+
}
|
82
|
+
|
76
83
|
self.class._add_instances(self)
|
77
84
|
end
|
78
85
|
|
@@ -207,8 +214,6 @@ module Pretentious
|
|
207
214
|
@_methods_for_test = @_methods_for_test || []
|
208
215
|
@_let_variables = @_let_variables || {}
|
209
216
|
|
210
|
-
|
211
|
-
#puts \"local_variables\"
|
212
217
|
v_locals = caller_context.eval('local_variables')
|
213
218
|
|
214
219
|
v_locals.each { |v|
|
@@ -402,15 +407,18 @@ module Pretentious
|
|
402
407
|
end
|
403
408
|
@_variable_names= {}
|
404
409
|
|
405
|
-
|
406
|
-
|
410
|
+
params = if (self.respond_to? :test_class )
|
411
|
+
test_class.instance_method(:initialize).parameters
|
412
|
+
else
|
413
|
+
method(:initialize).parameters
|
414
|
+
end
|
415
|
+
@_init_arguments[:params_types] = params
|
407
416
|
|
408
|
-
args.
|
417
|
+
args.each_with_index do |arg, index|
|
409
418
|
p = params[index]
|
410
419
|
if p.size > 1
|
411
420
|
@_variable_names[arg.object_id] = p[1].to_s
|
412
421
|
end unless p.nil?
|
413
|
-
index+=1
|
414
422
|
end unless args.nil?
|
415
423
|
|
416
424
|
end
|
@@ -420,11 +428,11 @@ module Pretentious
|
|
420
428
|
end
|
421
429
|
|
422
430
|
def _deconstruct
|
423
|
-
Pretentious::Deconstructor.new().deconstruct(self)
|
431
|
+
Pretentious::Deconstructor.new().deconstruct([], self)
|
424
432
|
end
|
425
433
|
|
426
|
-
def _deconstruct_to_ruby(indentation = 0)
|
427
|
-
Pretentious::Deconstructor.new().deconstruct_to_ruby(indentation, _variable_map, {}, self)
|
434
|
+
def _deconstruct_to_ruby(var_name = nil, indentation = 0)
|
435
|
+
Pretentious::Deconstructor.new().deconstruct_to_ruby(indentation, _variable_map.merge({self.object_id => var_name}), {}, [], self)
|
428
436
|
end
|
429
437
|
|
430
438
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Pretentious::MinitestGenerator
|
1
|
+
class Pretentious::MinitestGenerator < Pretentious::GeneratorBase
|
2
2
|
|
3
3
|
def initialize(options = {})
|
4
4
|
@deconstructor = Pretentious::Deconstructor.new
|
@@ -18,10 +18,6 @@ class Pretentious::MinitestGenerator
|
|
18
18
|
buffer
|
19
19
|
end
|
20
20
|
|
21
|
-
def buffer(line, level = 0)
|
22
|
-
@output_buffer << "#{indentation(level)}#{line}\n" if !line.nil? && line.strip != ''
|
23
|
-
end
|
24
|
-
|
25
21
|
def whitespace(level = 0)
|
26
22
|
@output_buffer << "#{indentation(level)}\n"
|
27
23
|
end
|
@@ -50,35 +46,10 @@ class Pretentious::MinitestGenerator
|
|
50
46
|
class_method_calls = test_instance.method_calls_by_method
|
51
47
|
generate_specs("#{test_instance.test_class.name}::",test_instance.test_class.name, class_method_calls, test_instance.let_variables)
|
52
48
|
else
|
53
|
-
buffer("class Scenario#{instance_count} < Test#{@test_class.name}",0)
|
49
|
+
buffer("class #{test_instance.test_class.name}Scenario#{instance_count} < Test#{@test_class.name}",0)
|
54
50
|
|
55
51
|
buffer("def setup",1)
|
56
|
-
|
57
|
-
dependencies = []
|
58
|
-
|
59
|
-
args = test_instance._init_arguments[:params]
|
60
|
-
block = test_instance._init_arguments[:block]
|
61
|
-
dependencies = dependencies | args
|
62
|
-
|
63
|
-
unless block.nil?
|
64
|
-
dependencies << block
|
65
|
-
end
|
66
|
-
|
67
|
-
block_source = if !block.nil? && block.is_a?(Pretentious::RecordedProc)
|
68
|
-
get_block_source(block, test_instance.init_let_variables, declarations, @_indentation.length * 2)
|
69
|
-
else
|
70
|
-
''
|
71
|
-
end
|
72
|
-
|
73
|
-
if (dependencies.size > 0)
|
74
|
-
buffer(declare_dependencies(dependencies, test_instance.init_let_variables, 2, declarations))
|
75
|
-
end
|
76
|
-
|
77
|
-
if (args.size > 0)
|
78
|
-
buffer("@fixture = #{test_instance.test_class.name}.new(#{params_generator(args, test_instance.init_let_variables, declarations)})#{block_source}",2)
|
79
|
-
else
|
80
|
-
buffer("@fixture = #{test_instance.test_class.name}.new#{block_source}",2)
|
81
|
-
end
|
52
|
+
buffer_inline(test_instance._deconstruct_to_ruby('@fixture', 2 * @_indentation.length))
|
82
53
|
buffer("end", 1)
|
83
54
|
whitespace
|
84
55
|
|
@@ -137,7 +108,6 @@ class Pretentious::MinitestGenerator
|
|
137
108
|
|
138
109
|
def generate_specs(context_prefix, fixture, method_calls, let_variables)
|
139
110
|
buffer("def test_current_expectation",1)
|
140
|
-
whitespace
|
141
111
|
declaration = {}
|
142
112
|
#collect all params
|
143
113
|
params_collection = []
|
@@ -310,7 +280,7 @@ class Pretentious::MinitestGenerator
|
|
310
280
|
deconstructor = Pretentious::Deconstructor.new
|
311
281
|
|
312
282
|
args = remove_primitives(args, variable_map)
|
313
|
-
deconstructor.deconstruct_to_ruby(level * @_indentation.length, variable_map, declarations, *args)
|
283
|
+
deconstructor.deconstruct_to_ruby(level * @_indentation.length, variable_map, declarations, [], *args)
|
314
284
|
end
|
315
285
|
|
316
286
|
def remove_primitives(args, let_lookup)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Pretentious::RspecGenerator
|
1
|
+
class Pretentious::RspecGenerator < Pretentious::GeneratorBase
|
2
2
|
|
3
3
|
def initialize(options = {})
|
4
4
|
@deconstructor = Pretentious::Deconstructor.new
|
@@ -18,9 +18,6 @@ class Pretentious::RspecGenerator
|
|
18
18
|
buffer
|
19
19
|
end
|
20
20
|
|
21
|
-
def buffer(line, level = 0)
|
22
|
-
@output_buffer << "#{indentation(level)}#{line}\n"
|
23
|
-
end
|
24
21
|
|
25
22
|
def whitespace(level = 0)
|
26
23
|
@output_buffer << "#{indentation(level)}\n"
|
@@ -46,40 +43,13 @@ class Pretentious::RspecGenerator
|
|
46
43
|
if (test_instance.is_a? Class)
|
47
44
|
#class methods
|
48
45
|
class_method_calls = test_instance.method_calls_by_method
|
49
|
-
generate_specs("#{test_instance.test_class.name}::",test_instance.test_class.name,
|
46
|
+
generate_specs("#{test_instance.test_class.name}::", test_instance.test_class.name,
|
47
|
+
class_method_calls, test_instance.let_variables)
|
50
48
|
else
|
51
49
|
buffer("context 'Scenario #{instance_count}' do",1)
|
52
50
|
|
53
51
|
buffer("before do",2)
|
54
|
-
|
55
|
-
|
56
|
-
declarations = {}
|
57
|
-
dependencies = []
|
58
|
-
|
59
|
-
args = test_instance._init_arguments[:params]
|
60
|
-
block = test_instance._init_arguments[:block]
|
61
|
-
dependencies = dependencies | args
|
62
|
-
|
63
|
-
unless block.nil?
|
64
|
-
dependencies << block
|
65
|
-
end
|
66
|
-
|
67
|
-
block_source = if !block.nil? && block.is_a?(Pretentious::RecordedProc)
|
68
|
-
get_block_source(block, test_instance.init_let_variables, declarations, @_indentation * 3)
|
69
|
-
else
|
70
|
-
''
|
71
|
-
end
|
72
|
-
|
73
|
-
if (dependencies.size > 0)
|
74
|
-
buffer(declare_dependencies(dependencies, test_instance.init_let_variables, 3 * @_indentation.length, declarations))
|
75
|
-
end
|
76
|
-
|
77
|
-
if (args.size > 0)
|
78
|
-
buffer("@fixture = #{test_instance.test_class.name}.new(#{params_generator(args, test_instance.init_let_variables, declarations)})#{block_source}",3)
|
79
|
-
else
|
80
|
-
buffer("@fixture = #{test_instance.test_class.name}.new#{block_source}",3)
|
81
|
-
end
|
82
|
-
whitespace
|
52
|
+
buffer_inline(test_instance._deconstruct_to_ruby('@fixture', 3 * @_indentation.length))
|
83
53
|
buffer("end",2)
|
84
54
|
whitespace
|
85
55
|
|
@@ -135,15 +105,16 @@ class Pretentious::RspecGenerator
|
|
135
105
|
|
136
106
|
def generate_specs(context_prefix, fixture, method_calls, let_variables)
|
137
107
|
buffer("it 'should pass current expectations' do",2)
|
138
|
-
whitespace
|
139
108
|
declaration = {}
|
140
109
|
#collect all params
|
141
110
|
params_collection = []
|
142
111
|
mocks_collection = {}
|
112
|
+
method_call_collection = []
|
143
113
|
|
144
114
|
method_calls.each_key do |k|
|
145
115
|
info_blocks_arr = method_calls[k]
|
146
116
|
info_blocks_arr.each do |block|
|
117
|
+
method_call_collection << block
|
147
118
|
params_collection = params_collection | block[:params]
|
148
119
|
if (!Pretentious::Deconstructor.is_primitive?(block[:result]) && !block[:result].kind_of?(Exception))
|
149
120
|
params_collection << block[:result]
|
@@ -171,7 +142,7 @@ class Pretentious::RspecGenerator
|
|
171
142
|
end
|
172
143
|
|
173
144
|
if (params_collection.size > 0)
|
174
|
-
buffer(declare_dependencies(params_collection, let_variables, 3 * @_indentation.length, declaration))
|
145
|
+
buffer(declare_dependencies(params_collection, let_variables, 3 * @_indentation.length, declaration, []))
|
175
146
|
end
|
176
147
|
|
177
148
|
if (mocks_collection.keys.size > 0)
|
@@ -282,11 +253,11 @@ class Pretentious::RspecGenerator
|
|
282
253
|
params.join(" ,")
|
283
254
|
end
|
284
255
|
|
285
|
-
def declare_dependencies(args, variable_map, level, declarations)
|
256
|
+
def declare_dependencies(args, variable_map, level, declarations, method_call_collection)
|
286
257
|
deconstructor = Pretentious::Deconstructor.new
|
287
258
|
|
288
259
|
args = remove_primitives(args, variable_map)
|
289
|
-
deconstructor.deconstruct_to_ruby(level, variable_map, declarations, *args)
|
260
|
+
deconstructor.deconstruct_to_ruby(level, variable_map, declarations, method_call_collection, *args)
|
290
261
|
end
|
291
262
|
|
292
263
|
def remove_primitives(args, let_lookup)
|