Module: RSpec::Varys
- Defined in:
- lib/rspec/varys.rb,
lib/rspec/varys.rb
Defined Under Namespace
Modules: DSL
Classes: RSpecGenerator
Class Method Summary
collapse
Class Method Details
.arguments_if_any(call) ⇒ Object
135
136
137
|
# File 'lib/rspec/varys.rb', line 135
def self.arguments_if_any(call)
call[:args].length > 0 ? { arguments: call[:args] } : { }
end
|
.class_name_for(object) ⇒ Object
106
107
108
109
110
111
112
|
# File 'lib/rspec/varys.rb', line 106
def self.class_name_for(object)
if object.kind_of? RSpec::Mocks::Double
'Name'
else
object.kind_of?(Class) ? object.name : object.class.name
end
end
|
.confirmed_messages ⇒ Object
78
79
80
|
# File 'lib/rspec/varys.rb', line 78
def self.confirmed_messages
@confirmed_messages
end
|
.open_yaml_file ⇒ Object
139
140
141
142
143
|
# File 'lib/rspec/varys.rb', line 139
def self.open_yaml_file
File.open("varys.yaml", 'w') do |io|
yield io
end
end
|
.print_report ⇒ Object
115
116
117
118
119
120
|
# File 'lib/rspec/varys.rb', line 115
def self.print_report
open_yaml_file do |yaml_file|
yaml_file.write YAML.dump(report)
end
puts "Specs have been generated based on mocks you aren't currently testing."
end
|
.record(object, message, args, block, return_value) ⇒ Object
92
93
94
95
96
97
98
99
100
|
# File 'lib/rspec/varys.rb', line 92
def self.record(object, message, args, block, return_value)
@recorded_messages << {
class_name: class_name_for(object),
type: type_for(object),
message: message,
args: args,
return_value: return_value
}
end
|
.recorded_messages ⇒ Object
82
83
84
|
# File 'lib/rspec/varys.rb', line 82
def self.recorded_messages
@recorded_messages
end
|
.report ⇒ Object
122
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/rspec/varys.rb', line 122
def self.report
{
untested_stubs: unconfirmed_messages.map do |call|
{
class_name: call[:class_name],
type: call[:type],
method: call[:message].to_s,
returns: call[:return_value]
}.merge(arguments_if_any(call))
end
}
end
|
.reset ⇒ Object
86
87
88
89
90
|
# File 'lib/rspec/varys.rb', line 86
def self.reset
@recorded_messages = []
@generated_specs = nil
@confirmed_messages = []
end
|
.type_for(object) ⇒ Object
102
103
104
|
# File 'lib/rspec/varys.rb', line 102
def self.type_for(object)
object.kind_of?(Class) ? 'class' : 'instance'
end
|
.unconfirmed_messages ⇒ Object
146
147
148
|
# File 'lib/rspec/varys.rb', line 146
def self.unconfirmed_messages
recorded_messages - confirmed_messages
end
|