class Typhoeus::Expectation

This class represents an expectation. It is part of the stubbing mechanism. An expectation contains an url and options, like a request. They were compared to the request url and options in order to evaluate wether they match. If thats the case, the attached responses were returned one by one.

@example Stub a request and get specified response.

expected = Typhoeus::Response.new
Typhoeus.stub("www.example.com").and_return(expected)

actual = Typhoeus.get("www.example.com")
expected == actual
#=> true

Attributes

base_url[R]

@api private

from[R]

@api private

options[R]

@api private

Public Class Methods

all() click to toggle source

Returns all expectations.

@example Return expectations.

Typhoeus::Expectation.all

@return [ Array<Typhoeus::Expectation> ] The expectations.

# File lib/typhoeus/expectation.rb, line 36
def all
  @expectations ||= []
end
clear() click to toggle source

Clears expectations. This is handy while testing and you want to make sure, that you don't get canned responses.

@example Clear expectations.

Typhoeus::Expectation.clear
# File lib/typhoeus/expectation.rb, line 46
def clear
  all.clear
end
find_by(request) click to toggle source

Returns expecation matching the provided request.

@example Find expectation.

Typhoeus::Expectation.find_by(request)

@return [ Expectation ] The matching expectation.

@api private

# File lib/typhoeus/expectation.rb, line 59
def find_by(request)
  all.find do |expectation|
    expectation.matches?(request)
  end
end
new(base_url, options = {}) click to toggle source

Creates an expectation.

@example Create expectation.

Typhoeus::Expectation.new(base_url)

@return [ Expectation ] The created expectation.

@api private

# File lib/typhoeus/expectation.rb, line 74
def initialize(base_url, options = {})
  @base_url = base_url
  @options = options
  @response_counter = 0
  @from = nil
end

Public Instance Methods

and_return(response) click to toggle source

Specify what should be returned, when this expectation is hit.

@example Add response.

expectation.and_return(response)

@return [ void ]

# File lib/typhoeus/expectation.rb, line 104
def and_return(response)
  responses << response
end
matches?(request) click to toggle source

Checks wether this expectation matches the provided request.

@example Check if request matches.

expectation.matches? request

@param [ Request ] request The request to check.

@return [ Boolean ] True when matches, else false.

@api private

# File lib/typhoeus/expectation.rb, line 119
def matches?(request)
  url_match?(request.base_url) && options_match?(request)
end
response() click to toggle source

Return the response. When there are multiple responses, they were returned one by one.

@example Return response.

expectation.response

@return [ Response ] The response.

@api private

# File lib/typhoeus/expectation.rb, line 145
def response
  response = responses.fetch(@response_counter, responses.last)
  @response_counter += 1
  response.mock = @from || true
  response
end
responses() click to toggle source

Return canned responses.

@example Return responses.

expectation.responses

@return [ Array<Typhoeus::Response> ] The responses.

@api private

# File lib/typhoeus/expectation.rb, line 131
def responses
  @responses ||= []
end
stubbed_from(value) click to toggle source

Set from value to mark an expectaion. Useful for other libraries, eg. webmock.

@example Mark expectation.

expectation.from(:webmock)

@param [ String ] value Value to set.

@return [ Expectation ] Returns self.

@api private

# File lib/typhoeus/expectation.rb, line 92
def stubbed_from(value)
  @from = value
  self
end

Private Instance Methods

options_match?(request) click to toggle source

Check wether the options matches the request options. I checks options and original options.

# File lib/typhoeus/expectation.rb, line 156
def options_match?(request)
  (options ? options.all?{ |k,v| request.original_options[k] == v || request.options[k] == v } : true)
end
url_match?(request_url) click to toggle source

Check wether the #base_url matches the request url. The #base_url can be a string, regex or nil. String and regexp were checked, nil is always true. Else false.

Nil serves as a placeholder in case you want to match all urls.

# File lib/typhoeus/expectation.rb, line 166
def url_match?(request_url)
  case base_url
  when String
    base_url == request_url
  when Regexp
    !!request_url.match(base_url)
  when nil
    true
  else
    false
  end
end