class Rack::ClientSpec::RequestTrace

Attributes

match[R]

Public Class Methods

new(sequences) click to toggle source
# File lib/rack/client_spec/request_trace.rb, line 6
def initialize(sequences)
  @pointers = {}
  @sequences = {}
  @match = nil
  sequences.each do |name, sequence|
    set_sequence name, sequence
  end
end

Public Instance Methods

reset(name) click to toggle source
# File lib/rack/client_spec/request_trace.rb, line 20
def reset(name)
  @pointers[name] = 0
end
set_sequence(name, sequence) click to toggle source
# File lib/rack/client_spec/request_trace.rb, line 15
def set_sequence(name, sequence)
  @sequences[name] = sequence
  @pointers[name] = 0
end
states() click to toggle source
# File lib/rack/client_spec/request_trace.rb, line 36
def states
  states = {}
  @sequences.each do |name, sequence|
    states[name] = []
    sequence.each_with_index do |request, i|
      states[name] << {
        passed: @pointers[name] > i,
        request: request,
      }
    end
  end

  states
end
trace(env) click to toggle source
# File lib/rack/client_spec/request_trace.rb, line 24
def trace(env)
  @sequences.each do |name, sequence|
    next unless sequence[@pointers[name]].match?(env)
    @pointers[name] += 1
    if @pointers[name] == sequence.length
      @match = name
      break
    end
  end
  !@match.nil?
end