Module: VerifiedDouble

Extended by:
RSpec::Mocks::ExampleMethods
Defined in:
lib/verified_double.rb,
lib/verified_double/boolean.rb,
lib/verified_double/version.rb,
lib/verified_double/matchers.rb,
lib/verified_double/stack_frame.rb,
lib/verified_double/simple_double.rb,
lib/verified_double/method_signature.rb,
lib/verified_double/is_a_class_double.rb,
lib/verified_double/is_an_instance_double.rb,
lib/verified_double/method_signature/value.rb,
lib/verified_double/parse_method_signature.rb,
lib/verified_double/can_record_interactions.rb,
lib/verified_double/method_signatures_report.rb,
lib/verified_double/recorded_method_signature.rb,
lib/verified_double/method_signature/class_value.rb,
lib/verified_double/rspec_mocks_syntax_overrides.rb,
lib/verified_double/method_signature/boolean_value.rb,
lib/verified_double/method_signature/instance_value.rb,
lib/verified_double/recorded_method_signature_registry.rb,
lib/verified_double/method_signature/rspec_double_value.rb

Defined Under Namespace

Modules: Boolean, CanRecordInteractions, IsAClassDouble, IsAnInstanceDouble, Matchers, RSpecMocksSyntaxOverrides Classes: MethodSignature, MethodSignaturesReport, ParseMethodSignature, RecordedMethodSignature, RecordedMethodSignatureRegistry, SimpleDouble, StackFrame

Constant Summary collapse

VERSION =
"0.4.2"

Class Method Summary collapse

Class Method Details

.of_class(class_name, options = {}) ⇒ Object



26
27
28
29
30
31
# File 'lib/verified_double.rb', line 26

def self.of_class(class_name, options = {})
  options[:transfer_nested_constants] = true if options[:transfer_nested_constants].nil?
  d = stub_const(class_name, Class.new, options)
  d.extend(VerifiedDouble::IsAClassDouble)
  VerifiedDouble.record(d)
end

.of_instance(*args) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/verified_double.rb', line 33

def self.of_instance(*args)
  d = double(*args)
  d.extend(VerifiedDouble::IsAnInstanceDouble)

  simple_double = SimpleDouble.new(d)

  if args[1]
    args[1].each do |method, return_value|
      method_signature = simple_double.build_recorded_method_signature(method)
      method_signature.return_values = [MethodSignature::Value.from(return_value)]
      VerifiedDouble.registry.insert 0, method_signature
    end
  end
  VerifiedDouble.record(d)
end

.record(a_double) ⇒ Object



49
50
51
52
# File 'lib/verified_double.rb', line 49

def self.record(a_double)
  a_double.extend(VerifiedDouble::CanRecordInteractions)
  a_double
end

.registryObject



54
55
56
# File 'lib/verified_double.rb', line 54

def self.registry
  @registry ||= RecordedMethodSignatureRegistry.new
end

.report_unverified_signatures(nested_example_group) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/verified_double.rb', line 58

def self.report_unverified_signatures(nested_example_group)
  MethodSignaturesReport.new
    .set_registered_signatures
    .set_verified_signatures_from_tags(nested_example_group)
    .set_verified_signatures_from_matchers
    .merge_verified_signatures
    .identify_unverified_signatures
    .output_unverified_signatures
end

.verified_signatures_from_matchersObject



68
69
70
# File 'lib/verified_double.rb', line 68

def self.verified_signatures_from_matchers
  @verified_signatures_from_matchers ||= []
end