twitter-ads 5.2.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/twitter-ads.rb +4 -1
- data/lib/twitter-ads/account.rb +9 -8
- data/lib/twitter-ads/campaign/campaign.rb +1 -2
- data/lib/twitter-ads/campaign/funding_instrument.rb +1 -2
- data/lib/twitter-ads/campaign/line_item.rb +2 -3
- data/lib/twitter-ads/campaign/organic_tweet.rb +1 -3
- data/lib/twitter-ads/campaign/targeting_criteria.rb +0 -1
- data/lib/twitter-ads/campaign/tweet.rb +4 -49
- data/lib/twitter-ads/client.rb +2 -2
- data/lib/twitter-ads/creative/account_media.rb +4 -6
- data/lib/twitter-ads/creative/draft_tweet.rb +40 -0
- data/lib/twitter-ads/creative/image_app_download_card.rb +2 -2
- data/lib/twitter-ads/creative/image_conversation_card.rb +3 -2
- data/lib/twitter-ads/creative/media_creative.rb +1 -2
- data/lib/twitter-ads/creative/media_library.rb +2 -4
- data/lib/twitter-ads/creative/promoted_account.rb +1 -2
- data/lib/twitter-ads/creative/promoted_tweet.rb +1 -2
- data/lib/twitter-ads/creative/scheduled_tweet.rb +1 -12
- data/lib/twitter-ads/creative/tweets.rb +52 -0
- data/lib/twitter-ads/creative/video_app_download_card.rb +4 -6
- data/lib/twitter-ads/creative/video_conversation_card.rb +6 -6
- data/lib/twitter-ads/creative/video_website_card.rb +3 -5
- data/lib/twitter-ads/creative/website_card.rb +2 -2
- data/lib/twitter-ads/cursor.rb +6 -0
- data/lib/twitter-ads/enum.rb +10 -5
- data/lib/twitter-ads/error.rb +5 -15
- data/lib/twitter-ads/http/request.rb +30 -1
- data/lib/twitter-ads/http/response.rb +1 -13
- data/lib/twitter-ads/resources/analytics.rb +99 -47
- data/lib/twitter-ads/resources/dsl.rb +8 -1
- data/lib/twitter-ads/restapi.rb +29 -0
- data/lib/twitter-ads/settings/tax.rb +13 -1
- data/lib/twitter-ads/targeting_criteria/conversation.rb +23 -0
- data/lib/twitter-ads/utils.rb +23 -0
- data/lib/twitter-ads/version.rb +1 -1
- data/spec/fixtures/tweet_previews.json +23 -0
- data/spec/twitter-ads/campaign/targeting_criteria_spec.rb +0 -1
- data/spec/twitter-ads/campaign/tweet_spec.rb +0 -59
- data/spec/twitter-ads/client_spec.rb +17 -1
- data/spec/twitter-ads/creative/tweet_previews_spec.rb +41 -0
- data/spec/twitter-ads/rate_limit_spec.rb +247 -0
- data/spec/twitter-ads/retry_count_spec.rb +61 -0
- metadata +14 -17
- data/lib/twitter-ads/audiences/audience_intelligence.rb +0 -68
- data/spec/fixtures/tweet_preview.json +0 -24
- data/spec/twitter-ads/creative/account_media_spec.rb +0 -32
- data/spec/twitter-ads/creative/image_app_download_card_spec.rb +0 -43
- data/spec/twitter-ads/creative/image_conversation_card_spec.rb +0 -40
- data/spec/twitter-ads/creative/video_app_download_card_spec.rb +0 -42
- data/spec/twitter-ads/creative/video_conversation_card_spec.rb +0 -51
- data/spec/twitter-ads/creative/website_card_spec.rb +0 -42
| @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            # Copyright (C) 2019 Twitter, Inc.
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require 'spec_helper'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe TwitterAds::Campaign do
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              before(:each) do
         | 
| 9 | 
            +
                allow_any_instance_of(Object).to receive(:sleep)
         | 
| 10 | 
            +
                stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              let(:client) do
         | 
| 14 | 
            +
                Client.new(
         | 
| 15 | 
            +
                  Faker::Lorem.characters(40),
         | 
| 16 | 
            +
                  Faker::Lorem.characters(40),
         | 
| 17 | 
            +
                  Faker::Lorem.characters(40),
         | 
| 18 | 
            +
                  Faker::Lorem.characters(40),
         | 
| 19 | 
            +
                  options: {
         | 
| 20 | 
            +
                    retry_max: 1,
         | 
| 21 | 
            +
                    retry_delay: 3000,
         | 
| 22 | 
            +
                    retry_on_status: [404, 500, 503]
         | 
| 23 | 
            +
                  }
         | 
| 24 | 
            +
                )
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
              let(:account) { client.accounts('2iqph') }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              it 'test retry count - success' do
         | 
| 29 | 
            +
                stub = stub_request(:get, "#{ADS_API}/accounts/2iqph/campaigns").to_return(
         | 
| 30 | 
            +
                  {
         | 
| 31 | 
            +
                    body: fixture(:campaigns_all),
         | 
| 32 | 
            +
                    status: 404
         | 
| 33 | 
            +
                  },
         | 
| 34 | 
            +
                  {
         | 
| 35 | 
            +
                    body: fixture(:campaigns_all),
         | 
| 36 | 
            +
                    status: 200
         | 
| 37 | 
            +
                  }
         | 
| 38 | 
            +
                )
         | 
| 39 | 
            +
                cusor = described_class.all(account)
         | 
| 40 | 
            +
                expect(cusor).to be_instance_of(Cursor)
         | 
| 41 | 
            +
                expect(stub).to have_been_requested.times(2)
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              it 'test retry count - fail' do
         | 
| 45 | 
            +
                stub = stub_request(:get, "#{ADS_API}/accounts/2iqph/campaigns").to_return(
         | 
| 46 | 
            +
                  {
         | 
| 47 | 
            +
                    body: fixture(:campaigns_all),
         | 
| 48 | 
            +
                    status: 404
         | 
| 49 | 
            +
                  }
         | 
| 50 | 
            +
                ).times(2)
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                begin
         | 
| 53 | 
            +
                  cusor = described_class.all(account)
         | 
| 54 | 
            +
                rescue NotFound => e
         | 
| 55 | 
            +
                  cusor = e
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
                expect(cusor).to be_instance_of(NotFound)
         | 
| 58 | 
            +
                expect(stub).to have_been_requested.times(2)
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: twitter-ads
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 6.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - John Babich
         | 
| @@ -12,7 +12,7 @@ authors: | |
| 12 12 | 
             
            autorequire: 
         | 
| 13 13 | 
             
            bindir: bin
         | 
| 14 14 | 
             
            cert_chain: []
         | 
| 15 | 
            -
            date: 2019- | 
| 15 | 
            +
            date: 2019-09-20 00:00:00.000000000 Z
         | 
| 16 16 | 
             
            dependencies:
         | 
| 17 17 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 18 18 | 
             
              name: multi_json
         | 
| @@ -57,7 +57,6 @@ files: | |
| 57 57 | 
             
            - bin/twitter-ads
         | 
| 58 58 | 
             
            - lib/twitter-ads.rb
         | 
| 59 59 | 
             
            - lib/twitter-ads/account.rb
         | 
| 60 | 
            -
            - lib/twitter-ads/audiences/audience_intelligence.rb
         | 
| 61 60 | 
             
            - lib/twitter-ads/audiences/tailored_audience.rb
         | 
| 62 61 | 
             
            - lib/twitter-ads/campaign/app_list.rb
         | 
| 63 62 | 
             
            - lib/twitter-ads/campaign/campaign.rb
         | 
| @@ -71,6 +70,7 @@ files: | |
| 71 70 | 
             
            - lib/twitter-ads/client.rb
         | 
| 72 71 | 
             
            - lib/twitter-ads/creative/account_media.rb
         | 
| 73 72 | 
             
            - lib/twitter-ads/creative/cards_fetch.rb
         | 
| 73 | 
            +
            - lib/twitter-ads/creative/draft_tweet.rb
         | 
| 74 74 | 
             
            - lib/twitter-ads/creative/image_app_download_card.rb
         | 
| 75 75 | 
             
            - lib/twitter-ads/creative/image_conversation_card.rb
         | 
| 76 76 | 
             
            - lib/twitter-ads/creative/media_creative.rb
         | 
| @@ -80,6 +80,7 @@ files: | |
| 80 80 | 
             
            - lib/twitter-ads/creative/promoted_tweet.rb
         | 
| 81 81 | 
             
            - lib/twitter-ads/creative/scheduled_tweet.rb
         | 
| 82 82 | 
             
            - lib/twitter-ads/creative/tweet_previews.rb
         | 
| 83 | 
            +
            - lib/twitter-ads/creative/tweets.rb
         | 
| 83 84 | 
             
            - lib/twitter-ads/creative/video_app_download_card.rb
         | 
| 84 85 | 
             
            - lib/twitter-ads/creative/video_conversation_card.rb
         | 
| 85 86 | 
             
            - lib/twitter-ads/creative/video_website_card.rb
         | 
| @@ -97,12 +98,14 @@ files: | |
| 97 98 | 
             
            - lib/twitter-ads/resources/dsl.rb
         | 
| 98 99 | 
             
            - lib/twitter-ads/resources/persistence.rb
         | 
| 99 100 | 
             
            - lib/twitter-ads/resources/resource.rb
         | 
| 101 | 
            +
            - lib/twitter-ads/restapi.rb
         | 
| 100 102 | 
             
            - lib/twitter-ads/settings/tax.rb
         | 
| 101 103 | 
             
            - lib/twitter-ads/settings/user.rb
         | 
| 102 104 | 
             
            - lib/twitter-ads/targeting/reach_estimate.rb
         | 
| 103 105 | 
             
            - lib/twitter-ads/targeting_criteria/app_store_category.rb
         | 
| 104 106 | 
             
            - lib/twitter-ads/targeting_criteria/behavior.rb
         | 
| 105 107 | 
             
            - lib/twitter-ads/targeting_criteria/behavior_taxonomy.rb
         | 
| 108 | 
            +
            - lib/twitter-ads/targeting_criteria/conversation.rb
         | 
| 106 109 | 
             
            - lib/twitter-ads/targeting_criteria/device.rb
         | 
| 107 110 | 
             
            - lib/twitter-ads/targeting_criteria/event.rb
         | 
| 108 111 | 
             
            - lib/twitter-ads/targeting_criteria/interest.rb
         | 
| @@ -135,7 +138,7 @@ files: | |
| 135 138 | 
             
            - spec/fixtures/reach_estimate.json
         | 
| 136 139 | 
             
            - spec/fixtures/tailored_audiences_all.json
         | 
| 137 140 | 
             
            - spec/fixtures/tailored_audiences_load.json
         | 
| 138 | 
            -
            - spec/fixtures/ | 
| 141 | 
            +
            - spec/fixtures/tweet_previews.json
         | 
| 139 142 | 
             
            - spec/fixtures/videos_all.json
         | 
| 140 143 | 
             
            - spec/fixtures/videos_load.json
         | 
| 141 144 | 
             
            - spec/quality_spec.rb
         | 
| @@ -150,17 +153,14 @@ files: | |
| 150 153 | 
             
            - spec/twitter-ads/campaign/targeting_criteria_spec.rb
         | 
| 151 154 | 
             
            - spec/twitter-ads/campaign/tweet_spec.rb
         | 
| 152 155 | 
             
            - spec/twitter-ads/client_spec.rb
         | 
| 153 | 
            -
            - spec/twitter-ads/creative/account_media_spec.rb
         | 
| 154 | 
            -
            - spec/twitter-ads/creative/image_app_download_card_spec.rb
         | 
| 155 | 
            -
            - spec/twitter-ads/creative/image_conversation_card_spec.rb
         | 
| 156 156 | 
             
            - spec/twitter-ads/creative/media_creative_spec.rb
         | 
| 157 157 | 
             
            - spec/twitter-ads/creative/promoted_account_spec.rb
         | 
| 158 158 | 
             
            - spec/twitter-ads/creative/promoted_tweet_spec.rb
         | 
| 159 | 
            -
            - spec/twitter-ads/creative/ | 
| 160 | 
            -
            - spec/twitter-ads/creative/video_conversation_card_spec.rb
         | 
| 161 | 
            -
            - spec/twitter-ads/creative/website_card_spec.rb
         | 
| 159 | 
            +
            - spec/twitter-ads/creative/tweet_previews_spec.rb
         | 
| 162 160 | 
             
            - spec/twitter-ads/cursor_spec.rb
         | 
| 163 161 | 
             
            - spec/twitter-ads/placements_spec.rb
         | 
| 162 | 
            +
            - spec/twitter-ads/rate_limit_spec.rb
         | 
| 163 | 
            +
            - spec/twitter-ads/retry_count_spec.rb
         | 
| 164 164 | 
             
            - spec/twitter-ads/utils_spec.rb
         | 
| 165 165 | 
             
            - twitter-ads.gemspec
         | 
| 166 166 | 
             
            homepage: https://github.com/twitterdev/twitter-ruby-ads-sdk
         | 
| @@ -188,37 +188,34 @@ specification_version: 4 | |
| 188 188 | 
             
            summary: The officially supported Twitter Ads API SDK for Ruby.
         | 
| 189 189 | 
             
            test_files:
         | 
| 190 190 | 
             
            - spec/spec_helper.rb
         | 
| 191 | 
            +
            - spec/twitter-ads/retry_count_spec.rb
         | 
| 191 192 | 
             
            - spec/twitter-ads/audiences/tailored_audience_spec.rb
         | 
| 192 193 | 
             
            - spec/twitter-ads/cursor_spec.rb
         | 
| 193 194 | 
             
            - spec/twitter-ads/account_spec.rb
         | 
| 194 195 | 
             
            - spec/twitter-ads/client_spec.rb
         | 
| 196 | 
            +
            - spec/twitter-ads/rate_limit_spec.rb
         | 
| 195 197 | 
             
            - spec/twitter-ads/placements_spec.rb
         | 
| 196 198 | 
             
            - spec/twitter-ads/campaign/targeting_criteria_spec.rb
         | 
| 197 199 | 
             
            - spec/twitter-ads/campaign/app_list_spec.rb
         | 
| 198 200 | 
             
            - spec/twitter-ads/campaign/reach_estimate_spec.rb
         | 
| 199 201 | 
             
            - spec/twitter-ads/campaign/line_item_spec.rb
         | 
| 200 202 | 
             
            - spec/twitter-ads/campaign/tweet_spec.rb
         | 
| 201 | 
            -
            - spec/twitter-ads/creative/ | 
| 202 | 
            -
            - spec/twitter-ads/creative/website_card_spec.rb
         | 
| 203 | 
            -
            - spec/twitter-ads/creative/video_app_download_card_spec.rb
         | 
| 203 | 
            +
            - spec/twitter-ads/creative/tweet_previews_spec.rb
         | 
| 204 204 | 
             
            - spec/twitter-ads/creative/media_creative_spec.rb
         | 
| 205 205 | 
             
            - spec/twitter-ads/creative/promoted_tweet_spec.rb
         | 
| 206 | 
            -
            - spec/twitter-ads/creative/image_conversation_card_spec.rb
         | 
| 207 | 
            -
            - spec/twitter-ads/creative/video_conversation_card_spec.rb
         | 
| 208 206 | 
             
            - spec/twitter-ads/creative/promoted_account_spec.rb
         | 
| 209 | 
            -
            - spec/twitter-ads/creative/image_app_download_card_spec.rb
         | 
| 210 207 | 
             
            - spec/twitter-ads/utils_spec.rb
         | 
| 211 208 | 
             
            - spec/shared/properties.rb
         | 
| 212 209 | 
             
            - spec/support/helpers.rb
         | 
| 213 210 | 
             
            - spec/fixtures/line_items_load.json
         | 
| 214 211 | 
             
            - spec/fixtures/promotable_users_all.json
         | 
| 215 212 | 
             
            - spec/fixtures/reach_estimate.json
         | 
| 216 | 
            -
            - spec/fixtures/tweet_preview.json
         | 
| 217 213 | 
             
            - spec/fixtures/accounts_features.json
         | 
| 218 214 | 
             
            - spec/fixtures/videos_all.json
         | 
| 219 215 | 
             
            - spec/fixtures/line_items_all.json
         | 
| 220 216 | 
             
            - spec/fixtures/placements.json
         | 
| 221 217 | 
             
            - spec/fixtures/promotable_users_load.json
         | 
| 218 | 
            +
            - spec/fixtures/tweet_previews.json
         | 
| 222 219 | 
             
            - spec/fixtures/tailored_audiences_all.json
         | 
| 223 220 | 
             
            - spec/fixtures/promoted_tweets_all.json
         | 
| 224 221 | 
             
            - spec/fixtures/funding_instruments_load.json
         | 
| @@ -1,68 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
            # Copyright (C) 2019 Twitter, Inc.
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module TwitterAds
         | 
| 5 | 
            -
              class AudienceIntelligence
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                include TwitterAds::DSL
         | 
| 8 | 
            -
                include TwitterAds::Resource::InstanceMethods
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                attr_reader :account
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                # writable
         | 
| 13 | 
            -
                property :conversation_type
         | 
| 14 | 
            -
                property :targeting_inputs
         | 
| 15 | 
            -
                property :audience_definition
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                # demographics-only
         | 
| 18 | 
            -
                property :start_time, type: :time
         | 
| 19 | 
            -
                property :end_time, type: :time
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                # read
         | 
| 22 | 
            -
                property :operator_type, read_only: true
         | 
| 23 | 
            -
                property :targeting_type, read_only: true
         | 
| 24 | 
            -
                property :targeting_value, read_only: true
         | 
| 25 | 
            -
                property :localized, read_only: true
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                RESOURCE_CONVERSATIONS  = "/#{TwitterAds::API_VERSION}/" \
         | 
| 28 | 
            -
                                          'accounts/%{account_id}/audience_intelligence/' \
         | 
| 29 | 
            -
                                          'conversations' # @api private
         | 
| 30 | 
            -
                RESOURCE_DEMOGRAPHICS   = "/#{TwitterAds::API_VERSION}/" \
         | 
| 31 | 
            -
                                          'accounts/%{account_id}/audience_intelligence/' \
         | 
| 32 | 
            -
                                          'demographics' # @api private
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                def initialize(account)
         | 
| 35 | 
            -
                  @account = account
         | 
| 36 | 
            -
                  self
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                def conversations
         | 
| 40 | 
            -
                  headers = { 'Content-Type' => 'application/json' }
         | 
| 41 | 
            -
                  params = {
         | 
| 42 | 
            -
                    conversation_type: conversation_type,
         | 
| 43 | 
            -
                    audience_definition: audience_definition,
         | 
| 44 | 
            -
                    targeting_inputs: targeting_inputs
         | 
| 45 | 
            -
                  }
         | 
| 46 | 
            -
                  resource = RESOURCE_CONVERSATIONS % { account_id: account.id }
         | 
| 47 | 
            -
                  request = Request.new(account.client, :post, resource, body: params.to_json, headers: headers)
         | 
| 48 | 
            -
                  Cursor.new(self.class, request, init_with: [account])
         | 
| 49 | 
            -
                end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                def demographics
         | 
| 52 | 
            -
                  headers = { 'Content-Type' => 'application/json' }
         | 
| 53 | 
            -
                  params = {
         | 
| 54 | 
            -
                    audience_definition: audience_definition,
         | 
| 55 | 
            -
                    targeting_inputs: targeting_inputs
         | 
| 56 | 
            -
                  }
         | 
| 57 | 
            -
                  resource = RESOURCE_DEMOGRAPHICS % { account_id: account.id }
         | 
| 58 | 
            -
                  response = Request.new(
         | 
| 59 | 
            -
                    account.client,
         | 
| 60 | 
            -
                    :post,
         | 
| 61 | 
            -
                    resource,
         | 
| 62 | 
            -
                    body: params.to_json,
         | 
| 63 | 
            -
                    headers: headers).perform
         | 
| 64 | 
            -
                  response.body[:data]
         | 
| 65 | 
            -
                  # cannot use cursor here given that the response "keys" are dynmaic based on input values
         | 
| 66 | 
            -
                end
         | 
| 67 | 
            -
              end
         | 
| 68 | 
            -
            end
         | 
| @@ -1,24 +0,0 @@ | |
| 1 | 
            -
            {
         | 
| 2 | 
            -
              "data_type": "tweet_preview",
         | 
| 3 | 
            -
              "data": [
         | 
| 4 | 
            -
                {
         | 
| 5 | 
            -
                  "platform": "web",
         | 
| 6 | 
            -
                  "preview": "   <div><img><div><div><div><a>AdsAPI</a><a>@AdsAPI</a></div></div><div>Hello World!</div><div><div><img><div><div></div><div><span> Ratings/pricing not available for preview </span><span> Ratings/pricing not available for preview </span></div><div></div>  INSTALL  </div></div></div><a><img></a><div><div><span></span><span>Promoted by AdsAPI</span></div></div></div></div>"
         | 
| 7 | 
            -
                },
         | 
| 8 | 
            -
                {
         | 
| 9 | 
            -
                  "platform": "android",
         | 
| 10 | 
            -
                  "preview": "   <div><img><div><div><div><a>AdsAPI</a><a>@AdsAPI</a></div></div><div>Hello World!</div><div><div><img><div><div></div><div><span> Ratings/pricing not available for preview </span><span> Ratings/pricing not available for preview </span></div><div></div>  INSTALL  </div></div></div><a><img></a><div><div><span></span><span>Promoted by AdsAPI</span></div></div></div></div>"
         | 
| 11 | 
            -
                },
         | 
| 12 | 
            -
                {
         | 
| 13 | 
            -
                  "platform": "iphone",
         | 
| 14 | 
            -
                  "preview": "   <div><img><div><div><div><a>AdsAPI</a><a>@AdsAPI</a></div></div><div>Hello World!</div><div><div><img><div><div></div><div><span> Ratings/pricing not available for preview </span><span> Ratings/pricing not available for preview </span></div><div></div>  INSTALL  </div></div></div><a><img></a><div><div><span></span><span>Promoted by AdsAPI</span></div></div></div></div>"
         | 
| 15 | 
            -
                }
         | 
| 16 | 
            -
              ],
         | 
| 17 | 
            -
              "request": {
         | 
| 18 | 
            -
                "params": {
         | 
| 19 | 
            -
                  "status": "Hello World!",
         | 
| 20 | 
            -
                  "card_id": "pfs",
         | 
| 21 | 
            -
                  "account_id": "2iqph"
         | 
| 22 | 
            -
                }
         | 
| 23 | 
            -
              }
         | 
| 24 | 
            -
            }
         | 
| @@ -1,32 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
            # Copyright (C) 2019 Twitter, Inc.
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            require 'spec_helper'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            include TwitterAds::Enum
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            describe TwitterAds::Creative::AccountMedia do
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              before(:each) do
         | 
| 11 | 
            -
                stub_fixture(:get, :accounts_all, "#{ADS_API}/accounts")
         | 
| 12 | 
            -
                stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              let(:client) do
         | 
| 16 | 
            -
                Client.new(
         | 
| 17 | 
            -
                  Faker::Lorem.characters(15),
         | 
| 18 | 
            -
                  Faker::Lorem.characters(40),
         | 
| 19 | 
            -
                  "123456-#{Faker::Lorem.characters(40)}",
         | 
| 20 | 
            -
                  Faker::Lorem.characters(40)
         | 
| 21 | 
            -
                )
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              let(:account) { client.accounts.first }
         | 
| 25 | 
            -
             | 
| 26 | 
            -
              # check model properties
         | 
| 27 | 
            -
              subject { described_class.new(account) }
         | 
| 28 | 
            -
              read  = %w(id created_at updated_at deleted media_url)
         | 
| 29 | 
            -
              write = %w(media_id creative_type video_id)
         | 
| 30 | 
            -
              include_examples 'object property check', read, write
         | 
| 31 | 
            -
             | 
| 32 | 
            -
            end
         | 
| @@ -1,43 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
            # Copyright (C) 2019 Twitter, Inc.
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            require 'spec_helper'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            describe TwitterAds::Creative::ImageAppDownloadCard do
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              before(:each) do
         | 
| 9 | 
            -
                stub_fixture(:get, :accounts_all, "#{ADS_API}/accounts")
         | 
| 10 | 
            -
                stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              let(:client) do
         | 
| 14 | 
            -
                Client.new(
         | 
| 15 | 
            -
                  Faker::Lorem.characters(15),
         | 
| 16 | 
            -
                  Faker::Lorem.characters(40),
         | 
| 17 | 
            -
                  "123456-#{Faker::Lorem.characters(40)}",
         | 
| 18 | 
            -
                  Faker::Lorem.characters(40)
         | 
| 19 | 
            -
                )
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              let(:account) { client.accounts.first }
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              # check model properties
         | 
| 25 | 
            -
              subject { described_class.new(account) }
         | 
| 26 | 
            -
              read  = %w(id created_at updated_at deleted)
         | 
| 27 | 
            -
             | 
| 28 | 
            -
              write = %w(
         | 
| 29 | 
            -
                name
         | 
| 30 | 
            -
                country_code
         | 
| 31 | 
            -
                iphone_app_id
         | 
| 32 | 
            -
                iphone_deep_link
         | 
| 33 | 
            -
                ipad_app_id
         | 
| 34 | 
            -
                ipad_deep_link
         | 
| 35 | 
            -
                googleplay_app_id
         | 
| 36 | 
            -
                googleplay_deep_link
         | 
| 37 | 
            -
                app_cta
         | 
| 38 | 
            -
                wide_app_image_media_id
         | 
| 39 | 
            -
              )
         | 
| 40 | 
            -
             | 
| 41 | 
            -
              include_examples 'object property check', read, write
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            end
         | 
| @@ -1,40 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
            # Copyright (C) 2019 Twitter, Inc.
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            require 'spec_helper'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            describe TwitterAds::Creative::ImageConversationCard do
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              before(:each) do
         | 
| 9 | 
            -
                stub_fixture(:get, :accounts_all, "#{ADS_API}/accounts")
         | 
| 10 | 
            -
                stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              let(:client) do
         | 
| 14 | 
            -
                Client.new(
         | 
| 15 | 
            -
                  Faker::Lorem.characters(15),
         | 
| 16 | 
            -
                  Faker::Lorem.characters(40),
         | 
| 17 | 
            -
                  "123456-#{Faker::Lorem.characters(40)}",
         | 
| 18 | 
            -
                  Faker::Lorem.characters(40)
         | 
| 19 | 
            -
                )
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              let(:account) { client.accounts.first }
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              # check model properties
         | 
| 25 | 
            -
              subject { described_class.new(account) }
         | 
| 26 | 
            -
              read  = %w(id image deleted created_at updated_at)
         | 
| 27 | 
            -
              write = %w(
         | 
| 28 | 
            -
                name
         | 
| 29 | 
            -
                title
         | 
| 30 | 
            -
                first_cta
         | 
| 31 | 
            -
                first_cta_tweet
         | 
| 32 | 
            -
                second_cta
         | 
| 33 | 
            -
                second_cta_tweet
         | 
| 34 | 
            -
                thank_you_text
         | 
| 35 | 
            -
                thank_you_url
         | 
| 36 | 
            -
                image_media_id
         | 
| 37 | 
            -
              )
         | 
| 38 | 
            -
              include_examples 'object property check', read, write
         | 
| 39 | 
            -
             | 
| 40 | 
            -
            end
         | 
| @@ -1,42 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
            # Copyright (C) 2019 Twitter, Inc.
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            require 'spec_helper'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            describe TwitterAds::Creative::VideoAppDownloadCard do
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              before(:each) do
         | 
| 9 | 
            -
                stub_fixture(:get, :accounts_all, "#{ADS_API}/accounts")
         | 
| 10 | 
            -
                stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              let(:client) do
         | 
| 14 | 
            -
                Client.new(
         | 
| 15 | 
            -
                  Faker::Lorem.characters(15),
         | 
| 16 | 
            -
                  Faker::Lorem.characters(40),
         | 
| 17 | 
            -
                  "123456-#{Faker::Lorem.characters(40)}",
         | 
| 18 | 
            -
                  Faker::Lorem.characters(40)
         | 
| 19 | 
            -
                )
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              let(:account) { client.accounts.first }
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              # check model properties
         | 
| 25 | 
            -
              subject { described_class.new(account) }
         | 
| 26 | 
            -
              read  = %w(id video_url video_poster_url deleted created_at updated_at)
         | 
| 27 | 
            -
              write = %w(
         | 
| 28 | 
            -
                name
         | 
| 29 | 
            -
                country_code
         | 
| 30 | 
            -
                iphone_app_id
         | 
| 31 | 
            -
                iphone_deep_link
         | 
| 32 | 
            -
                ipad_app_id
         | 
| 33 | 
            -
                ipad_deep_link
         | 
| 34 | 
            -
                googleplay_app_id
         | 
| 35 | 
            -
                googleplay_deep_link
         | 
| 36 | 
            -
                app_cta
         | 
| 37 | 
            -
                image_media_id
         | 
| 38 | 
            -
                video_id
         | 
| 39 | 
            -
              )
         | 
| 40 | 
            -
              include_examples 'object property check', read, write
         | 
| 41 | 
            -
             | 
| 42 | 
            -
            end
         | 
| @@ -1,51 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
            # Copyright (C) 2019 Twitter, Inc.
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            require 'spec_helper'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            describe TwitterAds::Creative::VideoConversationCard do
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              before(:each) do
         | 
| 9 | 
            -
                stub_fixture(:get, :accounts_all, "#{ADS_API}/accounts")
         | 
| 10 | 
            -
                stub_fixture(:get, :accounts_load, "#{ADS_API}/accounts/2iqph")
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              let(:client) do
         | 
| 14 | 
            -
                Client.new(
         | 
| 15 | 
            -
                  Faker::Lorem.characters(15),
         | 
| 16 | 
            -
                  Faker::Lorem.characters(40),
         | 
| 17 | 
            -
                  "123456-#{Faker::Lorem.characters(40)}",
         | 
| 18 | 
            -
                  Faker::Lorem.characters(40)
         | 
| 19 | 
            -
                )
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              let(:account) { client.accounts.first }
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              # check model properties
         | 
| 25 | 
            -
              subject { described_class.new(account) }
         | 
| 26 | 
            -
             | 
| 27 | 
            -
              read = %w(
         | 
| 28 | 
            -
                id
         | 
| 29 | 
            -
                video_url
         | 
| 30 | 
            -
                video_poster_url
         | 
| 31 | 
            -
                deleted
         | 
| 32 | 
            -
                created_at
         | 
| 33 | 
            -
                updated_at
         | 
| 34 | 
            -
              )
         | 
| 35 | 
            -
             | 
| 36 | 
            -
              write = %w(
         | 
| 37 | 
            -
                name
         | 
| 38 | 
            -
                title
         | 
| 39 | 
            -
                first_cta
         | 
| 40 | 
            -
                first_cta_tweet
         | 
| 41 | 
            -
                second_cta
         | 
| 42 | 
            -
                second_cta_tweet
         | 
| 43 | 
            -
                thank_you_text
         | 
| 44 | 
            -
                thank_you_url
         | 
| 45 | 
            -
                image_media_id
         | 
| 46 | 
            -
                video_id
         | 
| 47 | 
            -
              )
         | 
| 48 | 
            -
             | 
| 49 | 
            -
              include_examples 'object property check', read, write
         | 
| 50 | 
            -
             | 
| 51 | 
            -
            end
         |