diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a585c1a..909610b9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: strategy: matrix: operating-system: [ubuntu-latest] - version: ['3.0', '3.2'] + version: ['3.0', '3.1', '3.2', '3.3', '3.4', 'head'] steps: - name: Checkout uses: actions/checkout@v2 @@ -16,12 +16,11 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.version }} + bundler-cache: true - - name: Before install - run: gem install bundler -v "< 2.0" - - - name: Bundle install - run: bundle install + - name: Run RSpec + continue-on-error: ${{ matrix.ruby == 'head' }} + run: bundle exec rspec - name: Gem build run: gem build *.gemspec diff --git a/.rspec b/.rspec new file mode 100644 index 00000000..c99d2e73 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--require spec_helper diff --git a/Gemfile b/Gemfile index b4e2a20b..ef7c3d39 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,8 @@ source "https://rubygems.org" gemspec + +# `money` gem dependency that's wrongly required by them +# Should be removed after the next `money` release that include [0] +# [0] https://github.com/RubyMoney/money/commit/815b6187ca0ede892d7d48ff5e633a2f811f9285 +gem 'bigdecimal' diff --git a/Gemfile.lock b/Gemfile.lock index a7328323..7c5ce495 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,19 +1,22 @@ PATH remote: . specs: - facebookbusiness (22.0.0) + facebookbusiness (22.0.1) concurrent-ruby (~> 1.1) countries (>= 3, < 7) faraday (~> 2.6) faraday-multipart (~> 1.0, >= 1.0.4) json (~> 2.6) + logger money (~> 6.13) + ostruct GEM remote: https://rubygems.org/ specs: ast (2.4.2) awesome_print (1.9.2) + bigdecimal (3.1.9) byebug (11.1.3) coderay (1.1.3) concurrent-ruby (1.3.3) @@ -21,6 +24,7 @@ GEM unicode_utils (~> 1.4) countries (5.7.2) unaccent (~> 0.3) + date (3.4.1) diff-lcs (1.5.0) dotenv (2.8.1) faraday (2.9.2) @@ -31,7 +35,13 @@ GEM net-http i18n (1.14.5) concurrent-ruby (~> 1.0) + io-console (0.8.0) + irb (1.15.2) + pp (>= 0.6.0) + rdoc (>= 4.0.0) + reline (>= 0.4.2) json (2.7.2) + logger (1.7.0) method_source (1.0.0) minitest (5.14.4) money (6.19.0) @@ -39,18 +49,29 @@ GEM multipart-post (2.4.1) net-http (0.4.1) uri + ostruct (0.6.1) parallel (1.22.1) parser (3.2.0.0) ast (~> 2.4.1) + pp (0.6.2) + prettyprint + prettyprint (0.2.0) pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) pry-coolline (0.2.6) coolline (~> 0.5) pry (~> 0.13) + psych (5.2.3) + date + stringio rainbow (3.1.1) rake (13.0.6) + rdoc (6.13.1) + psych (>= 4.0.0) regexp_parser (2.6.2) + reline (0.6.1) + io-console (~> 0.5) rexml (3.3.3) strscan rspec (3.12.0) @@ -78,6 +99,7 @@ GEM rubocop-ast (1.24.1) parser (>= 3.1.1.0) ruby-progressbar (1.11.0) + stringio (3.1.7) strscan (3.1.0) unaccent (0.4.0) unicode-display_width (1.8.0) @@ -91,10 +113,12 @@ PLATFORMS DEPENDENCIES awesome_print (~> 1.8) + bigdecimal bundler (~> 2.2) byebug (~> 11.0) dotenv (~> 2.7) facebookbusiness! + irb minitest (~> 5.14.2) pry (~> 0.12) pry-coolline (~> 0.2) diff --git a/facebookbusiness.gemspec b/facebookbusiness.gemspec index fba8d0e5..ef094a43 100644 --- a/facebookbusiness.gemspec +++ b/facebookbusiness.gemspec @@ -40,6 +40,8 @@ Gem::Specification.new do |s| s.add_dependency 'json', '~> 2.6' s.add_dependency 'countries', '>= 3', '< 7' s.add_dependency 'money', '~> 6.13' + s.add_dependency 'logger' + s.add_dependency 'ostruct' s.add_development_dependency 'awesome_print', '~> 1.8' s.add_development_dependency 'bundler', '~> 2.2' @@ -51,6 +53,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'rake', '~> 13.0' s.add_development_dependency 'rspec', '~> 3.8' s.add_development_dependency 'rubocop', '~> 0.71' + s.add_development_dependency 'irb' s.files = Dir['LICENSE.txt', 'README.md', 'lib/**/*', 'bin/*'] s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) } diff --git a/lib/facebook_ads/ad_objects/server_side/event.rb b/lib/facebook_ads/ad_objects/server_side/event.rb index 22ce6978..1640ae27 100644 --- a/lib/facebook_ads/ad_objects/server_side/event.rb +++ b/lib/facebook_ads/ad_objects/server_side/event.rb @@ -411,10 +411,10 @@ def normalize hash['messaging_channel'] = messaging_channel end unless original_event_data.nil? - hash['original_event_data'] = original_event_data + hash['original_event_data'] = original_event_data.normalize end unless attribution_data.nil? - hash['attribution_data'] = attribution_data + hash['attribution_data'] = attribution_data.normalize end hash end diff --git a/spec/lib/facebook_ads/ad_objects/server_side/attribution_data_spec.rb b/spec/lib/facebook_ads/ad_objects/server_side/attribution_data_spec.rb index d2fa333e..ecf85fe6 100644 --- a/spec/lib/facebook_ads/ad_objects/server_side/attribution_data_spec.rb +++ b/spec/lib/facebook_ads/ad_objects/server_side/attribution_data_spec.rb @@ -39,14 +39,14 @@ ) expect(attribution_data.normalize).to eq({ - 'scope': scope, - 'visit_time': visit_time, - 'ad_id': ad_id, - 'adset_id': adset_id, - 'campaign_id': campaign_id, - 'attr_window': attr_window, - 'attribution_share': attribution_share, - 'attribution_model': attribution_model, + 'scope' => scope, + 'visit_time' => visit_time, + 'ad_id' => ad_id, + 'adset_id' => adset_id, + 'campaign_id' => campaign_id, + 'attr_window' => attr_window, + 'attribution_share' => attribution_share, + 'attribution_model' => attribution_model, }) end diff --git a/spec/lib/facebook_ads/ad_objects/server_side/event_request_async_spec.rb b/spec/lib/facebook_ads/ad_objects/server_side/event_request_async_spec.rb index d78f1946..f016e57c 100644 --- a/spec/lib/facebook_ads/ad_objects/server_side/event_request_async_spec.rb +++ b/spec/lib/facebook_ads/ad_objects/server_side/event_request_async_spec.rb @@ -42,9 +42,9 @@ messages: 'message3', fbtrace_id: 'fbtrace123', } - expected_response = FacebookAds::ServerSide::EventResponse.new(response) + expected_response = FacebookAds::ServerSide::EventResponse.new(**response) expect(mock_ads_pixel).to receive_message_chain('events.create').with(expected_params).and_return(response) - expect(FacebookAds::AdsPixel).to receive(:get).with(event_request_async.pixel_id).and_return(mock_ads_pixel) + expect(FacebookAds::AdsPixel).to receive(:get).with(event_request_async.pixel_id, nil).and_return(mock_ads_pixel) promise = event_request_async.execute response = promise.value! diff --git a/spec/lib/facebook_ads/ad_objects/server_side/event_request_spec.rb b/spec/lib/facebook_ads/ad_objects/server_side/event_request_spec.rb index 0b38703a..205d38b9 100644 --- a/spec/lib/facebook_ads/ad_objects/server_side/event_request_spec.rb +++ b/spec/lib/facebook_ads/ad_objects/server_side/event_request_spec.rb @@ -136,9 +136,9 @@ messages: 'message3', fbtrace_id: 'fbtrace123', } - expected_response = FacebookAds::ServerSide::EventResponse.new(response) + expected_response = FacebookAds::ServerSide::EventResponse.new(**response) expect(mock_ads_pixel).to receive_message_chain('events.create').with(expected_params).and_return(response) - expect(FacebookAds::AdsPixel).to receive(:get).with(event_request.pixel_id).and_return(mock_ads_pixel) + expect(FacebookAds::AdsPixel).to receive(:get).with(event_request.pixel_id, nil).and_return(mock_ads_pixel) response = event_request.execute expect(response).to eq(expected_response) @@ -159,9 +159,9 @@ messages: 'message3', fbtrace_id: 'fbtrace123', } - expected_response = FacebookAds::ServerSide::EventResponse.new(response) + expected_response = FacebookAds::ServerSide::EventResponse.new(**response) expect(mock_ads_pixel).to receive_message_chain('events.create').with(expected_params).and_return(response) - expect(FacebookAds::AdsPixel).to receive(:get).with(event_request.pixel_id).and_return(mock_ads_pixel) + expect(FacebookAds::AdsPixel).to receive(:get).with(event_request.pixel_id, nil).and_return(mock_ads_pixel) response = event_request.execute expect(response).to eq(expected_response) diff --git a/spec/lib/facebook_ads/ad_objects/server_side/user_data_spec.rb b/spec/lib/facebook_ads/ad_objects/server_side/user_data_spec.rb index e7c8613f..54f8ef9a 100644 --- a/spec/lib/facebook_ads/ad_objects/server_side/user_data_spec.rb +++ b/spec/lib/facebook_ads/ad_objects/server_side/user_data_spec.rb @@ -41,7 +41,7 @@ allow(FacebookAds::ServerSide::Util).to receive(:normalize) do |input, field_type| "#{field_type}_#{input}-normalized" end - user_data = FacebookAds::ServerSide::UserData.new(attrs) + user_data = FacebookAds::ServerSide::UserData.new(**attrs) normalized = user_data.normalize expect(normalized).to eq( @@ -83,7 +83,7 @@ allow(FacebookAds::ServerSide::Util).to receive(:normalize_array) do |input, field_type| input + [field_type] end - user_data = FacebookAds::ServerSide::UserData.new(attrs) + user_data = FacebookAds::ServerSide::UserData.new(**attrs) normalized = user_data.normalize expect(normalized).to eq( @@ -216,8 +216,8 @@ expect(user_data1).to eq(user_data2) expect(user_data1.hash).to eq(user_data2.hash) - user_data1 = FacebookAds::ServerSide::UserData.new(attrs) - user_data2 = FacebookAds::ServerSide::UserData.new(attrs) + user_data1 = FacebookAds::ServerSide::UserData.new(**attrs) + user_data2 = FacebookAds::ServerSide::UserData.new(**attrs) expect(user_data1).to eq(user_data2) expect(user_data1.hash).to eq(user_data2.hash) end