Class: Rack::ClientSpec::RequestTrace

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/client_spec/request_trace.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sequences) ⇒ RequestTrace

Returns a new instance of RequestTrace.



6
7
8
9
10
11
12
13
# 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

Instance Attribute Details

#matchObject (readonly)

Returns the value of attribute match.



4
5
6
# File 'lib/rack/client_spec/request_trace.rb', line 4

def match
  @match
end

Instance Method Details

#reset(name) ⇒ Object



20
21
22
# File 'lib/rack/client_spec/request_trace.rb', line 20

def reset(name)
  @pointers[name] = 0
end

#set_sequence(name, sequence) ⇒ Object



15
16
17
18
# File 'lib/rack/client_spec/request_trace.rb', line 15

def set_sequence(name, sequence)
  @sequences[name] = sequence
  @pointers[name] = 0
end

#statesObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# 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