Class: GraphWeaver::Testing::Sequence

Inherits:
Object
  • Object
show all
Defined in:
lib/graph_weaver/testing/failure.rb

Overview

Delegates each call to the next client in line (the last one repeats) — fail N times, then succeed, for retry/backoff testing:

 Sequence.new(Failure.transport, Failure.transport, fake)

Instance Method Summary collapse

Constructor Details

#initialize(*clients) ⇒ Sequence

Returns a new instance of Sequence.



97
98
99
100
# File 'lib/graph_weaver/testing/failure.rb', line 97

def initialize(*clients)
  @clients = clients.flatten
  @calls = 0
end

Instance Method Details

#execute(query, variables: {}) ⇒ Object



102
103
104
105
106
# File 'lib/graph_weaver/testing/failure.rb', line 102

def execute(query, variables: {})
  client = @clients[[@calls, @clients.size - 1].min]
  @calls += 1
  client.execute(query, variables:)
end