Module: RecordInvocation

Included in:
Controls::Recorder::Example, Controls::Recorder::RecordMacro::Example, Controls::Recorder::RecordMacro::IgnoredParameters::Example
Defined in:
lib/record_invocation/controls/recorder.rb,
lib/record_invocation/record_invocation.rb,
lib/record_invocation/controls/invocation.rb

Defined Under Namespace

Modules: Controls, Record

Constant Summary collapse

Error =
::Class.new(RuntimeError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(cls) ⇒ Object



4
5
6
7
8
# File 'lib/record_invocation/record_invocation.rb', line 4

def self.included(cls)
  cls.class_exec do
    extend Record
  end
end

Instance Method Details

#__invocation(method_name, **parameters) ⇒ Object Also known as: invocation



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

def __invocation(method_name, **parameters)
  once = parameters.delete(:once)
  once ||= false

  invocations = __invocations(method_name, **parameters)

  if invocations.empty?
    return nil
  end

  if once && invocations.length > 1
    raise Error, "More than one invocation record matches (Method Name: #{method_name.inspect}, Parameters: #{parameters.inspect})"
  end

  invocations.first
end

#__invocations(method_name = nil, **parameters) ⇒ Object Also known as: invocations



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/record_invocation/record_invocation.rb', line 55

def __invocations(method_name=nil, **parameters)
  if method_name.nil? && parameters.empty?
    return __records
  end

  invocations = __records.select { |invocation| invocation.method_name == method_name }

  if parameters.nil?
    return invocations
  end

  if invocations.empty?
    return []
  end

  invocations = invocations.select do |invocation|
    parameters.all? do |match_parameter_name, match_parameter_value|
      invocation_value = invocation.arguments[match_parameter_name]

      invocation_value == match_parameter_value
    end
  end

  invocations
end

#__invoked?(method_name = nil, **parameters) ⇒ Boolean Also known as: invoked?



82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/record_invocation/record_invocation.rb', line 82

def __invoked?(method_name=nil, **parameters)
  if method_name.nil? && parameters.empty?
    return !__records.empty?
  end

  if not parameters.key?(:once)
    parameters[:once] = false
  end

  invocation = __invocation(method_name, **parameters)
  !invocation.nil?
end

#__invoked_once?(method_name, **parameters) ⇒ Boolean Also known as: invoked_once?



96
97
98
99
# File 'lib/record_invocation/record_invocation.rb', line 96

def __invoked_once?(method_name, **parameters)
  parameters[:once] = true
  __invoked?(method_name, **parameters)
end

#__one_invocation(method_name, **parameters) ⇒ Object Also known as: one_invocation



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

def __one_invocation(method_name, **parameters)
  parameters[:once] = true
  __invocation(method_name, **parameters)
end

#__record(invocation) ⇒ Object Also known as: record



15
16
17
18
# File 'lib/record_invocation/record_invocation.rb', line 15

def __record(invocation)
  __records << invocation
  records
end

#__record_invocation(invocation_or_binding) ⇒ Object Also known as: record_invocation



21
22
23
24
25
26
27
28
# File 'lib/record_invocation/record_invocation.rb', line 21

def __record_invocation(invocation_or_binding)
  if invocation_or_binding.is_a?(Binding)
    invocation = Invocation.build(invocation_or_binding)
  end

  __record(invocation)
  invocation
end

#__recordsObject Also known as: records



10
11
12
# File 'lib/record_invocation/record_invocation.rb', line 10

def __records
  @__records ||= []
end