Sha256: 191ff39ede3454706b6120715ea708e015edfda3a1ce90409bd550653e18750d

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

module WebMock

  class RequestRegistry
    include Singleton

    attr_accessor :request_stubs, :requested_signatures

    def initialize
      reset_webmock
    end

    def reset_webmock
      self.request_stubs = []
      self.requested_signatures = Util::HashCounter.new
    end

    def register_request_stub(stub)
      request_stubs.insert(0, stub)
      stub
    end

    def registered_request?(request_signature)
      request_stub_for(request_signature)
    end

    def response_for_request(request_signature)
      stub = request_stub_for(request_signature)
      stub ? stub.response : nil
    end
    
    def times_executed(request_profile)
      self.requested_signatures.hash.select { |request_signature, times_executed|
        request_signature.match(request_profile)
      }.inject(0) {|sum, (_, times_executed)| sum + times_executed }
    end

    private

    def request_stub_for(request_signature)
      request_stubs.detect { |registered_request_stub|
        request_signature.match(registered_request_stub.request_profile)
      }
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
webmock-0.7.3 lib/webmock/request_registry.rb
webmock-0.7.2 lib/webmock/request_registry.rb