twitter-ads 3.0.0 → 4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c478e42cfbc201c9d7b1398f4839d3c7ed371516
4
- data.tar.gz: 8d095aa46a24e63d4d82d458b3c212374e8af751
3
+ metadata.gz: 6fb4befdf5ee2d5b88722ae972166970cf2595b6
4
+ data.tar.gz: 8665ca5d969a1a03f13a8c0dcf57719a1523936a
5
5
  SHA512:
6
- metadata.gz: a1580a6a6ced69b6697cff139584e179a0d2922aab01d655e836f085f5de8723b93fe57f7d831217493b0108413ff7bebe7c963772e3064115a7e3289e6a97e7
7
- data.tar.gz: 77cc29877f848a55e04459c73ca8041769b1ce6043c499e1c2ea6fce5f13d8b48beb319c90e8867a9d696fc3954cbd3053e1c25898c11158a899e8dbf3eaa534
6
+ metadata.gz: 795e91e3a932600ed0d67c52b74006e8f08819464d51d1a968af96e31c4dbbeb37ccca49e0fcf98014e47fe2ba850f900e855c8fa3dd1dcd618e24cb3aaa7e43
7
+ data.tar.gz: 369d6ec2a92a433f591b1ed3482a85ff51a4294ab3cfa6be7792a5540b6d93088de737bcbc1f392caaec2bee1c4385b955faf02262835005dd417d17c833ea2f
data/lib/twitter-ads.rb CHANGED
@@ -69,7 +69,6 @@ require 'twitter-ads/creative/video_app_download_card'
69
69
  require 'twitter-ads/creative/video_conversation_card'
70
70
  require 'twitter-ads/creative/video_website_card'
71
71
  require 'twitter-ads/creative/website_card'
72
- require 'twitter-ads/creative/video'
73
72
  require 'twitter-ads/creative/poll_cards'
74
73
 
75
74
  require 'twitter-ads/targeting/reach_estimate'
@@ -77,4 +76,7 @@ require 'twitter-ads/targeting/reach_estimate'
77
76
  require 'twitter-ads/measurement/web_event_tag'
78
77
  require 'twitter-ads/measurement/app_event_tag'
79
78
 
79
+ require 'twitter-ads/settings/user'
80
+ require 'twitter-ads/settings/tax'
81
+
80
82
  require 'twitter-ads/legacy.rb'
@@ -208,20 +208,6 @@ module TwitterAds
208
208
  load_resource(TailoredAudience, id, opts)
209
209
  end
210
210
 
211
- # Returns a collection of videos available to the current account.
212
- #
213
- # @param id [String] The Video ID value.
214
- # @param opts [Hash] A Hash of extended options.
215
- # @option opts [Boolean] :with_deleted Indicates if deleted items should be included.
216
- # @option opts [String] :sort_by The object param to sort the API response by.
217
- #
218
- # @since 0.3.0
219
- #
220
- # @return A Cursor or object instance.
221
- def videos(id = nil, opts = {})
222
- load_resource(Video, id, opts)
223
- end
224
-
225
211
  # Returns the most recent promotable Tweets created by one or more specified Twitter users.
226
212
  #
227
213
  # @param ids [Array] An Array of Twitter user IDs.
@@ -33,6 +33,9 @@ module TwitterAds
33
33
  'accounts/%{account_id}/tailored_audience_changes'.freeze # @api private
34
34
  RESOURCE_MEMBERSHIPS = "/#{TwitterAds::API_VERSION}/" +
35
35
  'tailored_audience_memberships'.freeze # @api private
36
+ RESOURCE_USERS = "/#{TwitterAds::API_VERSION}/ \
37
+ accounts/%{account_id}/tailored_audiences/ \
38
+ %{id}/users".freeze # @api private
36
39
  # @api private
37
40
  GLOBAL_OPT_OUT = "/#{TwitterAds::API_VERSION}/" +
38
41
  'accounts/%{account_id}/tailored_audiences/global_opt_out'.freeze
@@ -86,6 +89,25 @@ module TwitterAds
86
89
  end
87
90
  end
88
91
 
92
+ # Creates a new tailored audience.
93
+ #
94
+ # @example
95
+ # audience = TailoredAudience.create_instance(account, 'my list')
96
+ #
97
+ # @param account [Account] The account object instance.
98
+ # @param name [String] The tailored audience name.
99
+ #
100
+ # @since 4.0
101
+ #
102
+ # @return [TailoredAudience] The newly created tailored audience instance.
103
+ def create_instance(account, name)
104
+ audience = new(account)
105
+ params = { name: name }
106
+ resource = RESOURCE_COLLECTION % { account_id: account.id }
107
+ response = Request.new(account.client, :post, resource, params: params).perform
108
+ audience.from_response(response.body[:data])
109
+ end
110
+
89
111
  # Updates the global opt-out list for the specified advertiser account.
90
112
  #
91
113
  # @example
@@ -194,6 +216,50 @@ module TwitterAds
194
216
  [success_count, total_count]
195
217
  end
196
218
 
219
+ # This is a private API and requires whitelisting from Twitter.
220
+ #
221
+ # This endpoint will allow partners to add, update and remove users from a given
222
+ # tailored_audience_id.
223
+ # The endpoint will also accept multiple user identifier types per user as well.
224
+ #
225
+ # @example
226
+ # tailored_audience.users(
227
+ # account,
228
+ # [
229
+ # {
230
+ # "operation_type": "Update",
231
+ # "params": {
232
+ # "effective_at": "2018-05-15T00:00:00Z",
233
+ # "expires_at": "2019-01-01T07:00:00Z",
234
+ # "users": [
235
+ # {
236
+ # "twitter_id": [
237
+ # "4798b8bbdcf6f2a52e527f46a3d7a7c9aefb541afda03af79c74809ecc6376f3"
238
+ # ]
239
+ # }
240
+ # ]
241
+ # }
242
+ # }
243
+ # ]
244
+ # )
245
+ #
246
+ # @since 4.0
247
+ #
248
+ # @return success_count, total_count
249
+ def users(params)
250
+ resource = RESOURCE_USERS % { account_id: account.id, id: id }
251
+ headers = { 'Content-Type' => 'application/json' }
252
+ response = TwitterAds::Request.new(account.client,
253
+ :post,
254
+ resource,
255
+ headers: headers,
256
+ body: params.to_json).perform
257
+ success_count = response.body[:data][:success_count]
258
+ total_count = response.body[:data][:total_count]
259
+
260
+ [success_count, total_count]
261
+ end
262
+
197
263
  private
198
264
 
199
265
  def create_audience(name, list_type)
@@ -39,6 +39,7 @@ module TwitterAds
39
39
  property :advertiser_user_id
40
40
  property :bid_type
41
41
  property :tracking_tags
42
+ property :lookalike_expansion
42
43
 
43
44
  # sdk only
44
45
  property :to_delete, type: :bool
@@ -12,7 +12,7 @@ module TwitterAds
12
12
 
13
13
  attr_reader :account
14
14
 
15
- property :app_country_code, read_only: true
15
+ property :country_code, read_only: true
16
16
  property :app_cta, read_only: true
17
17
  property :card_type, read_only: true
18
18
  property :card_uri, read_only: true
@@ -23,7 +23,7 @@ module TwitterAds
23
23
  property :updated_at, type: :time, read_only: true
24
24
  property :wide_app_image, read_only: true
25
25
 
26
- property :app_country_code
26
+ property :country_code
27
27
  property :app_cta
28
28
  property :googleplay_app_id
29
29
  property :googleplay_deep_link
@@ -25,7 +25,7 @@ module TwitterAds
25
25
  property :video_poster_url, read_only: true
26
26
  property :video_url, read_only: true
27
27
 
28
- property :app_country_code
28
+ property :country_code
29
29
  property :app_cta
30
30
  property :image_media_id
31
31
  property :ipad_app_id
@@ -221,5 +221,10 @@ module TwitterAds
221
221
  TARGETING_CRITERIA = 'TARGETING_CRITERIA'.freeze
222
222
  KEYWORD_AUDIENCE = 'KEYWORD_AUDIENCE'.freeze
223
223
  end
224
+
225
+ module LookalikeExpansion
226
+ DEFINED = 'DEFINED'.freeze
227
+ EXPANDED = 'EXPANDED'.freeze
228
+ end
224
229
  end
225
230
  end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class TaxSettings
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+ include TwitterAds::Persistence
10
+
11
+ attr_reader :account
12
+
13
+ property :address_city
14
+ property :address_country
15
+ property :address_email
16
+ property :address_first_name
17
+ property :address_last_name
18
+ property :address_name
19
+ property :address_postal_code
20
+ property :address_region
21
+ property :address_street1
22
+ property :address_street2
23
+ property :bill_to
24
+ property :business_relationship
25
+ property :client_address_city
26
+ property :client_address_country
27
+ property :client_address_email
28
+ property :client_address_first_name
29
+ property :client_address_last_name
30
+ property :client_address_name
31
+ property :client_address_postal_code
32
+ property :client_address_region
33
+ property :client_address_street1
34
+ property :client_address_street2
35
+ property :invoice_jurisdiction
36
+ property :tax_category
37
+ property :tax_exemption_id
38
+ property :tax_id
39
+
40
+ # sdk only
41
+ property :to_delete, type: :bool
42
+
43
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" +
44
+ 'accounts/%{account_id}/user_settings/%{id}'.freeze # @api private
45
+
46
+ def initialize(account)
47
+ @account = account
48
+ self
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+ # Copyright (C) 2015 Twitter, Inc.
3
+
4
+ module TwitterAds
5
+ class UserSettings
6
+
7
+ include TwitterAds::DSL
8
+ include TwitterAds::Resource
9
+ include TwitterAds::Persistence
10
+
11
+ attr_reader :account
12
+
13
+ property :notification_email
14
+ property :contact_phone
15
+ property :contact_phone_extension
16
+ property :subscribed_email_types
17
+ property :user_id
18
+
19
+ # sdk only
20
+ property :to_delete, type: :bool
21
+
22
+ RESOURCE = "/#{TwitterAds::API_VERSION}/" +
23
+ 'accounts/%{account_id}/user_settings/%{id}'.freeze # @api private
24
+
25
+ def initialize(account)
26
+ @account = account
27
+ self
28
+ end
29
+
30
+ end
31
+ end
@@ -2,5 +2,5 @@
2
2
  # Copyright (C) 2015 Twitter, Inc.
3
3
 
4
4
  module TwitterAds
5
- VERSION = '3.0.0'.freeze
5
+ VERSION = '4.0.0'.freeze
6
6
  end
@@ -275,41 +275,4 @@ describe TwitterAds::Account do
275
275
 
276
276
  end
277
277
 
278
- describe '#videos' do
279
-
280
- let!(:video_id) { 'd5e3ae4d-34c4-4f49-894e-0c17735916a4' }
281
-
282
- before(:each) do
283
- resource_collection = "#{ADS_API}/accounts/#{account.id}/videos"
284
- stub_fixture(:get, :videos_all, resource_collection)
285
-
286
- resource = "#{ADS_API}/accounts/#{account.id}/videos/#{video_id}"
287
- stub_fixture(:get, :videos_load, /#{resource}\?.*/)
288
- end
289
-
290
- context 'with an id specified' do
291
-
292
- it 'successfully loads the specified video' do
293
- result = account.videos(video_id)
294
- expect(result).not_to be_nil
295
- expect(result.class).to eq(TwitterAds::Video)
296
- expect(result.id).to eq(video_id)
297
- end
298
-
299
- end
300
-
301
- context 'without an id specified' do
302
-
303
- it 'succesfully returns a cursor with all videos' do
304
- result = account.videos
305
- expect(result.to_a.size).to eq(3)
306
- expect(result.class).to eq(TwitterAds::Cursor)
307
- expect(result.first.class).to eq(TwitterAds::Video)
308
- expect(result.first.id).to eq(video_id)
309
- end
310
-
311
- end
312
-
313
- end
314
-
315
278
  end
@@ -27,7 +27,7 @@ describe TwitterAds::Creative::ImageAppDownloadCard do
27
27
 
28
28
  write = %w(
29
29
  name
30
- app_country_code
30
+ country_code
31
31
  iphone_app_id
32
32
  iphone_deep_link
33
33
  ipad_app_id
@@ -26,7 +26,7 @@ describe TwitterAds::Creative::VideoAppDownloadCard do
26
26
  read = %w(id preview_url video_url video_poster_url deleted created_at updated_at)
27
27
  write = %w(
28
28
  name
29
- app_country_code
29
+ country_code
30
30
  iphone_app_id
31
31
  iphone_deep_link
32
32
  ipad_app_id
data/twitter-ads.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.version = TwitterAds::VERSION
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.licenses = ['MIT']
11
- s.authors = ['John Babich', 'Tushar Bhushan', 'Juan Shishido']
11
+ s.authors = ['Brandon Black', 'John Babich', 'Jacob Petrie']
12
12
  s.email = ['twitterdev-ads@twitter.com']
13
13
  s.homepage = 'https://github.com/twitterdev/twitter-ruby-ads-sdk'
14
14
  s.description = 'The officially supported Twitter Ads API SDK for Ruby.'
metadata CHANGED
@@ -1,38 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter-ads
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Brandon Black
7
8
  - John Babich
8
- - Tushar Bhushan
9
- - Juan Shishido
9
+ - Jacob Petrie
10
10
  autorequire:
11
11
  bindir: bin
12
- cert_chain:
13
- - |
14
- -----BEGIN CERTIFICATE-----
15
- MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRMwEQYDVQQDDAphZHNh
16
- cGktZGV2MRcwFQYKCZImiZPyLGQBGRYHdHdpdHRlcjETMBEGCgmSJomT8ixkARkW
17
- A2NvbTAeFw0xODAzMjIxNDU1NDNaFw0xOTAzMjIxNDU1NDNaMEMxEzARBgNVBAMM
18
- CmFkc2FwaS1kZXYxFzAVBgoJkiaJk/IsZAEZFgd0d2l0dGVyMRMwEQYKCZImiZPy
19
- LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvc9MVtVP
20
- iFcis6l0AVMhrz6PY2q6phws6rXDVlnfJ6YoCzKVaZQ7/F7rNccgBRm3e1YtfSMS
21
- Rbi6utXIyvi5w6f05R8ete2aI1mzocoErsg179ohrp9NCE1kkfX+1LV/HbFPhmcm
22
- KjbmBisAhcAz2SHUk+GBq8fbfKj+jv/K0WpsCinZtd38s96dBIiWK/o+evpSCXIo
23
- OwCwP+rxj9m3R6ZbyhFmagfMl3bTk8Xw+UZwc1GgCOJwODVqHMV7/ryyX6IY/Wbu
24
- Xw7hQ/4+dMs3xumArhfjQG/3ocHLo4jFScXJ0JYY+b1fW7b0EuvTAEoIcUctNz8o
25
- R+ptZC3y2GQ2BQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
26
- HQ4EFgQU/NBrOwjh8uJx/JrAN0FA9dy+RsIwIQYDVR0RBBowGIEWYWRzYXBpLWRl
27
- dkB0d2l0dGVyLmNvbTAhBgNVHRIEGjAYgRZhZHNhcGktZGV2QHR3aXR0ZXIuY29t
28
- MA0GCSqGSIb3DQEBBQUAA4IBAQAHgAKu94Ix68zuH9+sd89YLpj/bQKyrsW/YZMK
29
- JOIbklJGn2xzipuOnaiWCnetm4twROdmVqz+eu7DPFpVRuh8yd72/w5xO8GPBihs
30
- WiE4Wn2nS83n6szuSHtz+Osuwnpwi+IGcRaUU5k0ql4wzq0ThxfV1JLp1rYhioWn
31
- AwnieA4MlAGo5XyxOBSfgWz6J7qsG9iyvbMMSzn81PX0bUz0n0F1W4A+GPnn62/C
32
- 6/42oM9SP/6CMxevv7dmeQsbzuQWezV1EvcgHn8ITnFH9JXY8ZfDXPVyqvxPjeFH
33
- gs09+Abi4upZUoQi8GBp5k0sYT1f3aGIpxtuAJtahWypI+LI
34
- -----END CERTIFICATE-----
35
- date: 2018-03-22 00:00:00.000000000 Z
12
+ cert_chain: []
13
+ date: 2019-02-14 00:00:00.000000000 Z
36
14
  dependencies:
37
15
  - !ruby/object:Gem::Dependency
38
16
  name: multi_json
@@ -113,7 +91,6 @@ files:
113
91
  - lib/twitter-ads/creative/promoted_account.rb
114
92
  - lib/twitter-ads/creative/promoted_tweet.rb
115
93
  - lib/twitter-ads/creative/scheduled_tweet.rb
116
- - lib/twitter-ads/creative/video.rb
117
94
  - lib/twitter-ads/creative/video_app_download_card.rb
118
95
  - lib/twitter-ads/creative/video_conversation_card.rb
119
96
  - lib/twitter-ads/creative/video_website_card.rb
@@ -132,6 +109,8 @@ files:
132
109
  - lib/twitter-ads/resources/dsl.rb
133
110
  - lib/twitter-ads/resources/persistence.rb
134
111
  - lib/twitter-ads/resources/resource.rb
112
+ - lib/twitter-ads/settings/tax.rb
113
+ - lib/twitter-ads/settings/user.rb
135
114
  - lib/twitter-ads/targeting/reach_estimate.rb
136
115
  - lib/twitter-ads/targeting_criteria/app_store_category.rb
137
116
  - lib/twitter-ads/targeting_criteria/behavior.rb
@@ -191,8 +170,6 @@ files:
191
170
  - spec/twitter-ads/creative/promoted_tweet_spec.rb
192
171
  - spec/twitter-ads/creative/video_app_download_card_spec.rb
193
172
  - spec/twitter-ads/creative/video_conversation_card_spec.rb
194
- - spec/twitter-ads/creative/video_legacy_spec.rb
195
- - spec/twitter-ads/creative/video_spec.rb
196
173
  - spec/twitter-ads/creative/website_card_spec.rb
197
174
  - spec/twitter-ads/cursor_spec.rb
198
175
  - spec/twitter-ads/http/ton_upload_spec.rb
@@ -238,7 +215,6 @@ test_files:
238
215
  - spec/twitter-ads/campaign/tweet_spec.rb
239
216
  - spec/twitter-ads/creative/account_media_spec.rb
240
217
  - spec/twitter-ads/creative/website_card_spec.rb
241
- - spec/twitter-ads/creative/video_legacy_spec.rb
242
218
  - spec/twitter-ads/creative/video_app_download_card_spec.rb
243
219
  - spec/twitter-ads/creative/media_creative_spec.rb
244
220
  - spec/twitter-ads/creative/promoted_tweet_spec.rb
@@ -246,7 +222,6 @@ test_files:
246
222
  - spec/twitter-ads/creative/video_conversation_card_spec.rb
247
223
  - spec/twitter-ads/creative/promoted_account_spec.rb
248
224
  - spec/twitter-ads/creative/image_app_download_card_spec.rb
249
- - spec/twitter-ads/creative/video_spec.rb
250
225
  - spec/twitter-ads/utils_spec.rb
251
226
  - spec/shared/properties.rb
252
227
  - spec/support/helpers.rb
checksums.yaml.gz.sig DELETED
Binary file
data.tar.gz.sig DELETED
@@ -1,2 +0,0 @@
1
- x��*��DT��/�"x�ݰ�%��qR�Pf �:;S�ƛ��J�Y�e<�]�D��۬p��b��Wi�$[���vBF0����E�����E� 6�#�F�@�t���.�VY쮼��T��@���yp�S ݸ��۪{�>���Mh�
2
- �G�`�r����'v�#��W���!��A�MW�� ��5�n��%�o]|���;�� �h��E��B"���Ic osT�΁"7\r^bݠ�+?���
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
3
-
4
- module TwitterAds
5
- module Creative
6
-
7
- class Video
8
-
9
- include TwitterAds::DSL
10
- include TwitterAds::Resource
11
- include TwitterAds::Persistence
12
-
13
- attr_reader :account
14
-
15
- property :aspect_ratio, read_only: true
16
- property :created_at, type: :time, read_only: true
17
- property :deleted, type: :bool, read_only: true
18
- property :duration, read_only: true
19
- property :id, read_only: true
20
- property :media_key, read_only: true
21
- property :poster_url, read_only: true
22
- property :preview_url, read_only: true
23
- property :ready_to_tweet, type: :bool, read_only: true
24
- property :reasons_not_servable, read_only: true
25
- property :tweeted, type: :bool, read_only: true
26
- property :updated_at, type: :time, read_only: true
27
-
28
- property :description
29
- property :poster_image_media_id
30
- property :title
31
- property :video_media_id
32
-
33
- RESOURCE_COLLECTION = "/#{TwitterAds::API_VERSION}/" +
34
- 'accounts/%{account_id}/videos'.freeze # @api private
35
- RESOURCE = "/#{TwitterAds::API_VERSION}/" +
36
- 'accounts/%{account_id}/videos/%{id}'.freeze # @api private
37
-
38
- def initialize(account)
39
- @account = account
40
- self
41
- end
42
-
43
- end
44
-
45
- end
46
- end
47
-
48
- # TODO: legacy namespace support, to be removed in v1.0.0 (next major)
49
- TwitterAds::Video = TwitterAds::Creative::Video
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
3
-
4
- require 'spec_helper'
5
-
6
- describe TwitterAds::Video 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
- tweeted
30
- ready_to_tweet
31
- duration
32
- reasons_not_servable
33
- preview_url
34
- created_at
35
- updated_at
36
- deleted
37
- )
38
-
39
- write = %w(title description video_media_id)
40
-
41
- include_examples 'object property check', read, write
42
-
43
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
- # Copyright (C) 2015 Twitter, Inc.
3
-
4
- require 'spec_helper'
5
-
6
- describe TwitterAds::Creative::Video 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
- tweeted
30
- ready_to_tweet
31
- duration
32
- reasons_not_servable
33
- preview_url
34
- created_at
35
- updated_at
36
- deleted
37
- )
38
-
39
- write = %w(title description video_media_id)
40
-
41
- include_examples 'object property check', read, write
42
-
43
- end
metadata.gz.sig DELETED
Binary file