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/example_metadata.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: ExampleMetadata, MethodSignature, MethodSignaturesReport, ParseMethodSignature, RecordedMethodSignature, RecordedMethodSignatureRegistry, SimpleDouble, StackFrame

Constant Summary collapse

VERSION =
"0.8.1"

Class Method Summary collapse

Class Method Details

.allow_any_instance_of(klass) ⇒ Object



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

def self.allow_any_instance_of(klass)
  super(klass).tap do |d|
    VerifiedDouble.registry.current_double = VerifiedDouble.record(d)
  end
end

.doubles_in_current_testObject



33
34
35
# File 'lib/verified_double.rb', line 33

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

.expect_any_instance_of(klass) ⇒ Object



37
38
39
40
41
# File 'lib/verified_double.rb', line 37

def self.expect_any_instance_of(klass)
  super(klass).tap do |d|
    VerifiedDouble.registry.current_double = VerifiedDouble.record(d)
  end
end

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



43
44
45
46
47
48
49
50
# File 'lib/verified_double.rb', line 43

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

.of_instance(*args) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/verified_double.rb', line 52

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



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

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

.registryObject



74
75
76
# File 'lib/verified_double.rb', line 74

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

.report_unverified_signatures(nested_example_group) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'lib/verified_double.rb', line 78

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



88
89
90
# File 'lib/verified_double.rb', line 88

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

.wrap(object) ⇒ Object



92
93
94
95
96
97
98
99
100
# File 'lib/verified_double.rb', line 92

def self.wrap(object)
  if object.is_a?(Module)
    object.extend(VerifiedDouble::IsAClassDouble)
  else
    object.extend(VerifiedDouble::IsAnInstanceDouble)
  end

  VerifiedDouble.record(object)
end