Sha256: aa03c52ed08a057afa03fcebbb03fd46eba91cef6f80aa99f52d148036f0854c

Contents?: true

Size: 1.82 KB

Versions: 41

Compression:

Stored size: 1.82 KB

Contents

require 'webmock/rspec'

module WebMockHelper
  def mock_graph(method, path, response_file, options = {})
    stub_request(method, endpoint_for(path)).with(
      request_for(method, options)
    ).to_return(
      response_for(response_file, options)
    )
    res = yield
    a_request(method, endpoint_for(path)).with(
      request_for(method, options)
    ).should have_been_made.once
    res
  end

  def request_to(path, method = :get)
    raise_error(WebMock::NetConnectNotAllowedError) { |e|
      e.message.should include("Unregistered request: #{method.to_s.upcase}")
      e.message.should include(endpoint_for path)
    }
  end

  def mock_fql(query, response_file, options = {})
    options.merge!(:params => {
      :q => query
    })
    stub_request(:get, FbGraph::Query.new(query).endpoint).with(
      request_for(:get, options)
    ).to_return(
      response_for(response_file, options)
    )
    res = yield
    a_request(:get, FbGraph::Query.new(query).endpoint).with(
      request_for(:get, options)
    ).should have_been_made.once
    res
  end

  private

  def endpoint_for(path)
    File.join(FbGraph::ROOT_URL, path)
  end

  def request_for(method, options = {})
    request = {}
    if options[:access_token]
      options[:params] ||= {}
      options[:params][:access_token] = options[:access_token].to_s
    end
    if options[:params]
      case method
      when :post, :put
        request[:body] = options[:params]
      else
        request[:query] = options[:params]
      end
    end
    request
  end

  def response_for(response_file, options = {})
    response = {}
    response[:body] = File.new(File.join(File.dirname(__FILE__), '../mock_json', "#{response_file}.json"))
    if options[:status]
      response[:status] = options[:status]
    end
    response
  end
end

include WebMockHelper
WebMock.disable_net_connect!

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
fb_graph-2.5.9 spec/helpers/webmock_helper.rb
fb_graph-2.5.8 spec/helpers/webmock_helper.rb
fb_graph-2.5.7 spec/helpers/webmock_helper.rb
fb_graph-2.5.6 spec/helpers/webmock_helper.rb
fb_graph-2.5.5 spec/helpers/webmock_helper.rb
fb_graph-2.5.4 spec/helpers/webmock_helper.rb
fb_graph-2.5.3 spec/helpers/webmock_helper.rb
fb_graph-2.5.2 spec/helpers/webmock_helper.rb
fb_graph-2.5.1 spec/helpers/webmock_helper.rb
fb_graph-2.5.0 spec/helpers/webmock_helper.rb
fb_graph-2.4.20 spec/helpers/webmock_helper.rb
fb_graph-2.4.19 spec/helpers/webmock_helper.rb
fb_graph-2.4.18 spec/helpers/webmock_helper.rb
fb_graph-2.4.17 spec/helpers/webmock_helper.rb
fb_graph-2.4.16 spec/helpers/webmock_helper.rb
fb_graph-2.4.15 spec/helpers/webmock_helper.rb
fb_graph-2.4.14 spec/helpers/webmock_helper.rb
fb_graph-2.4.13 spec/helpers/webmock_helper.rb
fb_graph-2.4.12 spec/helpers/webmock_helper.rb
fb_graph-2.4.11 spec/helpers/webmock_helper.rb