Class: Faraday::Adapter::Test

Inherits:
Middleware show all
Defined in:
lib/faraday/adapter/test.rb

Overview

test = Faraday::Connection.new do

use Faraday::Adapter::Test do |stub|
  stub.get '/nigiri/sake.json' do
    [200, {}, 'hi world']
  end
end

end

resp = test.get ‘/nigiri/sake.json’ resp.body # => ‘hi world’

Defined Under Namespace

Classes: Stub, Stubs

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Middleware

#create_form_params, #full_path_for, #process_body_for_request, setup_parallel_manager

Constructor Details

#initialize(app, stubs = nil, &block) ⇒ Test

Returns a new instance of Test.



84
85
86
87
88
# File 'lib/faraday/adapter/test.rb', line 84

def initialize(app, stubs=nil, &block)
  super(app)
  @stubs = stubs || Stubs.new
  configure(&block) if block
end

Instance Attribute Details

#stubsObject

Returns the value of attribute stubs.



15
16
17
# File 'lib/faraday/adapter/test.rb', line 15

def stubs
  @stubs
end

Class Method Details

.loaded?Boolean

Returns:

  • (Boolean)


17
# File 'lib/faraday/adapter/test.rb', line 17

def self.loaded?() false end

Instance Method Details

#call(env) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/faraday/adapter/test.rb', line 103

def call(env)
  if stub = stubs.match(env[:method], request_uri(env[:url]), env[:body])
    status, headers, body = stub.block.call(env)
    env.update \
      :status           => status,
      :response_headers => headers,
      :body             => body
  else
    raise "no stubbed request for #{env[:method]} #{request_uri(env[:url])} #{env[:body]}"
  end
  @app.call(env)
end

#configure {|stubs| ... } ⇒ Object

Yields:



90
91
92
# File 'lib/faraday/adapter/test.rb', line 90

def configure
  yield stubs
end

#request_uri(url) ⇒ Object



94
95
96
97
# File 'lib/faraday/adapter/test.rb', line 94

def request_uri(url)
  (url.path != "" ? url.path : "/") +
  (url.query ? "?#{sort_query_params(url.query)}" : "")
end

#sort_query_params(query) ⇒ Object



99
100
101
# File 'lib/faraday/adapter/test.rb', line 99

def sort_query_params(query)
  query.split('&').sort.join('&')
end