diff --git a/lib/facebook_ads.rb b/lib/facebook_ads.rb index 803a7fc9..74f6ae1d 100644 --- a/lib/facebook_ads.rb +++ b/lib/facebook_ads.rb @@ -45,9 +45,9 @@ def configure require 'facebook_ads/ruby2patch' + require 'facebook_ads/session' require 'facebook_ads/config' require 'facebook_ads/errors' - require 'facebook_ads/session' require 'facebook_ads/fields' require 'facebook_ads/edge' require 'facebook_ads/param_set' diff --git a/lib/facebook_ads/config.rb b/lib/facebook_ads/config.rb index b1a8e23c..dcb63b8f 100644 --- a/lib/facebook_ads/config.rb +++ b/lib/facebook_ads/config.rb @@ -35,6 +35,7 @@ def self.setting(name, default = nil) setting :app_secret, ENV['FB_APP_SECRET'] setting :crash_logging_enabled, true setting :log_api_bodies, false + setting :faraday_adapter, Faraday.default_adapter def logger=(logger) Utils.logger = logger diff --git a/lib/facebook_ads/session.rb b/lib/facebook_ads/session.rb index 93566edd..0ff7ff59 100644 --- a/lib/facebook_ads/session.rb +++ b/lib/facebook_ads/session.rb @@ -66,7 +66,7 @@ def api_conn faraday.request :url_encoded faraday.response :logger, Utils.logger, bodies: FacebookAds.config.log_api_bodies - faraday.adapter Faraday.default_adapter + faraday.adapter FacebookAds.config.faraday_adapter end end diff --git a/spec/config_spec.rb b/spec/config_spec.rb new file mode 100644 index 00000000..dbed6bdd --- /dev/null +++ b/spec/config_spec.rb @@ -0,0 +1,42 @@ +# Copyright (c) 2017-present, Facebook, Inc. All rights reserved. +# +# You are hereby granted a non-exclusive, worldwide, royalty-free license to use, +# copy, modify, and distribute this software in source code or binary form for use +# in connection with the web services and APIs provided by Facebook. +# +# As with any software that integrates with the Facebook platform, your use of +# this software is subject to the Facebook Platform Policy +# [http://developers.facebook.com/policy/]. This copyright notice shall be +# included in all copies or substantial portions of the software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +RSpec.describe FacebookAds::Config do + it 'provides with default config' do + expect(subject).to have_attributes( + server_host: FacebookAds::DEFAULT_HOST, + api_version: FacebookAds::DEFAULT_API_VERSION, + access_token: ENV['FB_ACCESS_TOKEN'], + app_secret: ENV['FB_APP_SECRET'], + crash_logging_enabled: true, + log_api_bodies: false, + faraday_adapter: Faraday.default_adapter + ) + end + + context 'custom config' do + let(:fake_adapter) { double(:fake_adapter) } + + it 'saves custom values' do + subject.faraday_adapter = fake_adapter + + expect(subject.faraday_adapter).to eq fake_adapter + end + end +end