Sha256: 40fae1f458597a1479d0d1709bae887900058c9654f8c1adcee6d917deee9213
Contents?: true
Size: 1.79 KB
Versions: 2
Compression:
Stored size: 1.79 KB
Contents
module VCR class Cassette class HTTPInteractionList class NullList def response_for(*a); nil; end def has_interaction_matching?(*a); false; end end attr_reader :interactions, :request_matchers, :allow_playback_repeats, :parent_list def initialize(interactions, request_matchers, allow_playback_repeats = false, parent_list = NullList.new) @interactions = interactions.dup @request_matchers = request_matchers @allow_playback_repeats = allow_playback_repeats @parent_list = parent_list @used_interactions = [] end def response_for(request) if index = matching_interaction_index_for(request) interaction = @interactions.delete_at(index) @used_interactions.unshift interaction interaction.response elsif interaction = matching_used_interaction_for(request) interaction.response else @parent_list.response_for(request) end end def has_interaction_matching?(request) !!matching_interaction_index_for(request) || !!matching_used_interaction_for(request) || @parent_list.has_interaction_matching?(request) end private def matching_interaction_index_for(request) @interactions.index { |i| interaction_matches_request?(request, i) } end def matching_used_interaction_for(request) return nil unless @allow_playback_repeats @used_interactions.find { |i| interaction_matches_request?(request, i) } end def interaction_matches_request?(request, interaction) @request_matchers.all? do |matcher| VCR.request_matchers[matcher].matches?(request, interaction.request) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
vcr-2.0.0.beta2 | lib/vcr/cassette/http_interaction_list.rb |
vcr-2.0.0.beta1 | lib/vcr/cassette/http_interaction_list.rb |