Class: Typhoeus::Expectation
- Inherits:
-
Object
- Object
- Typhoeus::Expectation
- Defined in:
- lib/typhoeus/expectation.rb
Overview
This class represents an expectation. It is part of the stubbing mechanism. An expectation contains a url and options, like a request. They are compared to the request url and options in order to evaluate whether they match. If that’s the case, the attached responses are returned one by one.
Instance Attribute Summary collapse
- #base_url ⇒ Object readonly private
- #from ⇒ Object readonly private
- #options ⇒ Object readonly private
Class Method Summary collapse
-
.all ⇒ Array<Typhoeus::Expectation>
Returns all expectations.
-
.clear ⇒ Object
Clears expectations.
- .find_by(request) ⇒ Object private
-
.response_for(request) ⇒ Typhoeus::Response
private
Returns stubbed response matching the provided request.
Instance Method Summary collapse
-
#and_return(response = nil, &block) ⇒ void
Specify what should be returned, when this expectation is hit.
-
#initialize(base_url, options = {}) ⇒ Expectation
constructor
private
Creates an expectation.
-
#matches?(request) ⇒ Boolean
private
Checks whether this expectation matches the provided request.
-
#response(request) ⇒ Response
private
Return the response.
-
#responses ⇒ Array<Typhoeus::Response>
private
Return canned responses.
-
#stubbed_from(value) ⇒ Expectation
private
Set from value to mark an expectaion.
Constructor Details
#initialize(base_url, options = {}) ⇒ Expectation
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Creates an expectation.
108 109 110 111 112 113 |
# File 'lib/typhoeus/expectation.rb', line 108 def initialize(base_url, = {}) @base_url = base_url @options = @response_counter = 0 @from = nil end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
44 45 46 |
# File 'lib/typhoeus/expectation.rb', line 44 def base_url @base_url end |
#from ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
50 51 52 |
# File 'lib/typhoeus/expectation.rb', line 50 def from @from end |
#options ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
47 48 49 |
# File 'lib/typhoeus/expectation.rb', line 47 def @options end |
Class Method Details
.all ⇒ Array<Typhoeus::Expectation>
Returns all expectations.
60 61 62 |
# File 'lib/typhoeus/expectation.rb', line 60 def all @expectations ||= [] end |
.clear ⇒ Object
Clears expectations. This is handy while testing, and you want to make sure that you don’t get canned responses.
70 71 72 |
# File 'lib/typhoeus/expectation.rb', line 70 def clear all.clear end |
.find_by(request) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
93 94 95 96 97 |
# File 'lib/typhoeus/expectation.rb', line 93 def find_by(request) all.find do |expectation| expectation.matches?(request) end end |
.response_for(request) ⇒ Typhoeus::Response
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns stubbed response matching the provided request.
85 86 87 88 89 90 |
# File 'lib/typhoeus/expectation.rb', line 85 def response_for(request) expectation = find_by(request) return nil if expectation.nil? expectation.response(request) end |
Instance Method Details
#and_return(response = nil, &block) ⇒ void
This method returns an undefined value.
Specify what should be returned, when this expectation is hit.
138 139 140 141 |
# File 'lib/typhoeus/expectation.rb', line 138 def and_return(response=nil, &block) new_response = (response.nil? ? block : response) responses.push(*new_response) end |
#matches?(request) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Checks whether this expectation matches the provided request.
154 155 156 |
# File 'lib/typhoeus/expectation.rb', line 154 def matches?(request) url_match?(request.base_url) && (request) end |
#response(request) ⇒ Response
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return the response. When there are multiple responses, they are returned one by one.
180 181 182 183 184 185 186 187 188 |
# File 'lib/typhoeus/expectation.rb', line 180 def response(request) response = responses.fetch(@response_counter, responses.last) if response.respond_to?(:call) response = response.call(request) end @response_counter += 1 response.mock = @from || true response end |
#responses ⇒ Array<Typhoeus::Response>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return canned responses.
166 167 168 |
# File 'lib/typhoeus/expectation.rb', line 166 def responses @responses ||= [] end |
#stubbed_from(value) ⇒ Expectation
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Set from value to mark an expectaion. Useful for other libraries, e.g. WebMock.
126 127 128 129 |
# File 'lib/typhoeus/expectation.rb', line 126 def stubbed_from(value) @from = value self end |