Class: BlockGiven::Connectors::Stub

Inherits:
Base
  • Object
show all
Defined in:
lib/block_given/connectors/stub.rb

Overview

In-memory connector for tests. Responses can be static values, sequences (consumed in order, last value repeats) or procs receiving the params.

stub = BlockGiven::Connectors::Stub.new(
"eth_blockNumber" => BlockGiven::Connectors::Stub.sequence("0x10", "0x11"),
"eth_call" => ->(params) { "0x" + "0" * 63 + "1" }
)
stub.calls # => [["eth_blockNumber", []], ...]

Defined Under Namespace

Classes: Sequence

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#batch, #name

Constructor Details

#initialize(responses = {}, &handler) ⇒ Stub

Returns a new instance of Stub.



28
29
30
31
32
33
34
# File 'lib/block_given/connectors/stub.rb', line 28

def initialize(responses = {}, &handler)
  super()
  @responses = {}
  @handler = handler
  @calls = []
  responses.each { |method, value| stub(method, value) }
end

Instance Attribute Details

#callsObject (readonly)

Returns the value of attribute calls.



26
27
28
# File 'lib/block_given/connectors/stub.rb', line 26

def calls
  @calls
end

Class Method Details

.sequence(*values) ⇒ Object



24
# File 'lib/block_given/connectors/stub.rb', line 24

def self.sequence(*values) = Sequence.new(values)

Instance Method Details

#calls_for(method) ⇒ Object



49
# File 'lib/block_given/connectors/stub.rb', line 49

def calls_for(method) = calls.select { |(m, _)| m == method.to_s }.map(&:last)

#request(method, params = [], chain: nil) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/block_given/connectors/stub.rb', line 41

def request(method, params = [], chain: nil)
  @calls << [method.to_s, params]
  value = resolve(method.to_s, params, chain)
  raise value if value.is_a?(Exception)

  value
end

#reset!Object



50
# File 'lib/block_given/connectors/stub.rb', line 50

def reset! = @calls.clear

#stub(method, value = nil, &block) ⇒ Object



36
37
38
39
# File 'lib/block_given/connectors/stub.rb', line 36

def stub(method, value = nil, &block)
  @responses[method.to_s] = block || value
  self
end