yt 0.25.13 → 0.32.2

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.
Files changed (96) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +305 -1
  3. data/MIT-LICENSE +1 -1
  4. data/README.md +86 -5
  5. data/YOUTUBE_IT.md +3 -3
  6. data/lib/yt.rb +5 -2
  7. data/lib/yt/actions/list.rb +3 -3
  8. data/lib/yt/associations/has_authentication.rb +33 -1
  9. data/lib/yt/associations/has_reports.rb +13 -18
  10. data/lib/yt/collections/assets.rb +2 -2
  11. data/lib/yt/collections/authentications.rb +9 -2
  12. data/lib/yt/collections/base.rb +3 -3
  13. data/lib/yt/collections/bulk_report_jobs.rb +28 -0
  14. data/lib/yt/collections/bulk_reports.rb +24 -0
  15. data/lib/yt/collections/claims.rb +22 -1
  16. data/lib/yt/collections/comment_threads.rb +41 -0
  17. data/lib/yt/collections/content_owners.rb +1 -1
  18. data/lib/yt/collections/group_infos.rb +27 -0
  19. data/lib/yt/collections/group_items.rb +45 -0
  20. data/lib/yt/collections/reports.rb +75 -13
  21. data/lib/yt/collections/revocations.rb +30 -0
  22. data/lib/yt/collections/video_groups.rb +29 -0
  23. data/lib/yt/collections/videos.rb +34 -9
  24. data/lib/yt/constants/geography.rb +326 -0
  25. data/lib/yt/errors/forbidden.rb +1 -3
  26. data/lib/yt/errors/no_items.rb +1 -3
  27. data/lib/yt/errors/request_error.rb +10 -7
  28. data/lib/yt/errors/server_error.rb +1 -3
  29. data/lib/yt/errors/unauthorized.rb +3 -3
  30. data/lib/yt/models/account.rb +12 -0
  31. data/lib/yt/models/advertising_options_set.rb +4 -4
  32. data/lib/yt/models/bulk_report.rb +23 -0
  33. data/lib/yt/models/bulk_report_job.rb +23 -0
  34. data/lib/yt/models/channel.rb +21 -12
  35. data/lib/yt/models/claim.rb +13 -2
  36. data/lib/yt/models/comment.rb +37 -0
  37. data/lib/yt/models/comment_thread.rb +50 -0
  38. data/lib/yt/models/content_detail.rb +6 -0
  39. data/lib/yt/models/content_owner.rb +31 -1
  40. data/lib/yt/models/group_info.rb +16 -0
  41. data/lib/yt/models/group_item.rb +15 -0
  42. data/lib/yt/models/resource.rb +3 -10
  43. data/lib/yt/models/revocation.rb +12 -0
  44. data/lib/yt/models/right_owner.rb +0 -2
  45. data/lib/yt/models/snippet.rb +24 -3
  46. data/lib/yt/models/video.rb +42 -11
  47. data/lib/yt/models/video_group.rb +186 -0
  48. data/lib/yt/request.rb +5 -3
  49. data/lib/yt/version.rb +2 -2
  50. data/spec/collections/comment_threads_spec.rb +46 -0
  51. data/spec/collections/playlist_items_spec.rb +1 -1
  52. data/spec/collections/reports_spec.rb +2 -2
  53. data/spec/constants/geography_spec.rb +16 -0
  54. data/spec/models/annotation_spec.rb +1 -1
  55. data/spec/models/claim_spec.rb +15 -3
  56. data/spec/models/comment_spec.rb +40 -0
  57. data/spec/models/comment_thread_spec.rb +93 -0
  58. data/spec/models/content_detail_spec.rb +7 -0
  59. data/spec/models/reference_spec.rb +2 -2
  60. data/spec/models/request_spec.rb +21 -0
  61. data/spec/models/resource_spec.rb +0 -15
  62. data/spec/models/video_spec.rb +1 -1
  63. data/spec/requests/as_account/account_spec.rb +16 -4
  64. data/spec/requests/as_account/authentications_spec.rb +1 -13
  65. data/spec/requests/as_account/channel_spec.rb +15 -45
  66. data/spec/requests/as_account/playlist_item_spec.rb +3 -3
  67. data/spec/requests/as_account/playlist_spec.rb +5 -32
  68. data/spec/requests/as_account/video_spec.rb +2022 -21
  69. data/spec/requests/as_content_owner/account_spec.rb +4 -0
  70. data/spec/requests/as_content_owner/bulk_report_job_spec.rb +19 -0
  71. data/spec/requests/as_content_owner/channel_spec.rb +59 -270
  72. data/spec/requests/as_content_owner/content_owner_spec.rb +89 -1
  73. data/spec/requests/as_content_owner/playlist_spec.rb +0 -15
  74. data/spec/requests/as_content_owner/video_group_spec.rb +112 -0
  75. data/spec/requests/as_content_owner/video_spec.rb +72 -146
  76. data/spec/requests/as_server_app/channel_spec.rb +1 -21
  77. data/spec/requests/as_server_app/comment_spec.rb +22 -0
  78. data/spec/requests/as_server_app/comment_thread_spec.rb +27 -0
  79. data/spec/requests/as_server_app/comment_threads_spec.rb +41 -0
  80. data/spec/requests/as_server_app/playlist_item_spec.rb +2 -2
  81. data/spec/requests/as_server_app/playlist_spec.rb +1 -22
  82. data/spec/requests/as_server_app/video_spec.rb +21 -19
  83. data/spec/requests/as_server_app/videos_spec.rb +5 -5
  84. data/spec/requests/unauthenticated/video_spec.rb +1 -9
  85. data/spec/spec_helper.rb +1 -1
  86. data/yt.gemspec +2 -1
  87. metadata +51 -17
  88. data/lib/yt/collections/ids.rb +0 -27
  89. data/lib/yt/config.rb +0 -54
  90. data/lib/yt/models/configuration.rb +0 -70
  91. data/lib/yt/models/description.rb +0 -58
  92. data/lib/yt/models/url.rb +0 -91
  93. data/spec/models/configuration_spec.rb +0 -44
  94. data/spec/models/description_spec.rb +0 -94
  95. data/spec/models/url_spec.rb +0 -84
  96. data/spec/requests/as_account/resource_spec.rb +0 -18
@@ -16,6 +16,10 @@ describe Yt::Account, :partner do
16
16
  expect(content_owners.first).to be_a Yt::ContentOwner
17
17
  end
18
18
 
19
+ specify 'includes the display name for each content owner' do
20
+ expect(content_owners.first.display_name).to be_a String
21
+ end
22
+
19
23
  specify 'ensures the content owners have the same credentials as the account' do
20
24
  expect(content_owners.first.access_token).to eq account.access_token
21
25
  expect(content_owners.first.refresh_token).to eq account.refresh_token
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/bulk_report_job'
3
+
4
+ describe Yt::BulkReportJob, :partner do
5
+
6
+ describe '.bulk_reports' do
7
+ describe 'given the bulk report job has bulk reports' do
8
+ let(:job) { $content_owner.bulk_report_jobs.first }
9
+ let(:report) { job.bulk_reports.first }
10
+
11
+ it 'returns valid bulk reports' do
12
+ expect(report.id).to be_a String
13
+ expect(report.start_time).to be_a Time
14
+ expect(report.end_time).to be_a Time
15
+ expect(report.download_url).to be_a String
16
+ end
17
+ end
18
+ end
19
+ end
@@ -11,17 +11,19 @@ describe Yt::Channel, :partner do
11
11
  let(:id) { ENV['YT_TEST_PARTNER_CHANNEL_ID'] }
12
12
 
13
13
  describe 'multiple reports can be retrieved at once' do
14
- metrics = {views: Integer, uniques: Integer,
14
+ metrics = {views: Integer,
15
15
  estimated_minutes_watched: Integer, comments: Integer, likes: Integer,
16
16
  dislikes: Integer, shares: Integer, subscribers_gained: Integer,
17
- subscribers_lost: Integer, favorites_added: Integer,
17
+ subscribers_lost: Integer,
18
18
  videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
19
- favorites_removed: Integer, average_view_duration: Integer,
19
+ average_view_duration: Integer,
20
20
  average_view_percentage: Float, annotation_clicks: Integer,
21
- annotation_click_through_rate: Float,
22
- annotation_close_rate: Float, earnings: Float, impressions: Integer,
21
+ annotation_click_through_rate: Float, annotation_close_rate: Float,
22
+ card_impressions: Integer, card_clicks: Integer,
23
+ card_click_rate: Float, card_teaser_impressions: Integer,
24
+ card_teaser_clicks: Integer, card_teaser_click_rate: Float,
25
+ estimated_revenue: Float, ad_impressions: Integer,
23
26
  monetized_playbacks: Integer, playback_based_cpm: Float}
24
-
25
27
  specify 'by day, and are chronologically sorted' do
26
28
  range = {since: 5.days.ago.to_date, until: 3.days.ago.to_date}
27
29
  result = channel.reports range.merge(only: metrics, by: :day)
@@ -57,13 +59,15 @@ describe Yt::Channel, :partner do
57
59
  end
58
60
  end
59
61
 
60
- [:views, :uniques, :comments, :likes, :dislikes, :shares,
61
- :subscribers_gained, :subscribers_lost, :favorites_added,
62
+ [:views, :comments, :likes, :dislikes, :shares,
63
+ :subscribers_gained, :subscribers_lost,
62
64
  :videos_added_to_playlists, :videos_removed_from_playlists,
63
- :favorites_removed, :estimated_minutes_watched, :average_view_duration,
64
- :average_view_percentage, :impressions, :monetized_playbacks,
65
- :annotation_clicks, :annotation_click_through_rate, :playback_based_cpm,
66
- :annotation_close_rate, :earnings].each do |metric|
65
+ :estimated_minutes_watched, :average_view_duration,
66
+ :average_view_percentage, :ad_impressions, :monetized_playbacks,
67
+ :annotation_clicks, :annotation_click_through_rate,
68
+ :card_impressions, :card_clicks, :card_click_rate,
69
+ :card_teaser_impressions, :card_teaser_clicks, :card_teaser_click_rate,
70
+ :playback_based_cpm, :annotation_close_rate, :estimated_revenue].each do |metric|
67
71
  describe "#{metric} can be retrieved for a range of days" do
68
72
  let(:date_in) { ENV['YT_TEST_PARTNER_VIDEO_DATE'] }
69
73
  let(:date_out) { Date.parse(ENV['YT_TEST_PARTNER_VIDEO_DATE']) + 5 }
@@ -118,27 +122,14 @@ describe Yt::Channel, :partner do
118
122
  subscribers_gained: Integer, subscribers_lost: Integer,
119
123
  estimated_minutes_watched: Integer, average_view_duration: Integer,
120
124
  annotation_clicks: Integer, annotation_click_through_rate: Float,
121
- favorites_added: Integer, favorites_removed: Integer,
125
+ card_impressions: Integer, card_clicks: Integer,
126
+ card_click_rate: Float, card_teaser_impressions: Integer,
127
+ card_teaser_clicks: Integer, card_teaser_click_rate: Float,
122
128
  videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
123
- average_view_percentage: Float, impressions: Integer,
129
+ average_view_percentage: Float, ad_impressions: Integer,
124
130
  shares: Integer, playback_based_cpm: Float,
125
131
  monetized_playbacks: Integer, annotation_close_rate: Float,
126
- earnings: Float}.each do |metric, type|
127
- describe "#{metric} can be retrieved for a specific day" do
128
- let(:metric) { metric }
129
- let(:result) { channel.public_send "#{metric}_on", date }
130
-
131
- context 'in which the channel had data for the report' do
132
- let(:date) { Date.parse(ENV['YT_TEST_PARTNER_VIDEO_DATE']) + 95 }
133
- it { expect(result).to be_a type }
134
- end
135
-
136
- context 'in which the channel was not partnered' do
137
- let(:date) { 5.days.from_now }
138
- it { expect(result).to be_nil }
139
- end
140
- end
141
-
132
+ estimated_revenue: Float}.each do |metric, type|
142
133
  describe "#{metric} can be grouped by range" do
143
134
  let(:metric) { metric }
144
135
 
@@ -160,24 +151,24 @@ describe Yt::Channel, :partner do
160
151
  end
161
152
  end
162
153
 
163
- describe 'earnings can be retrieved for a specific day' do
154
+ describe 'estimated_revenue can be retrieved for a specific day' do
164
155
  # NOTE: This test sounds redundant, but it’s actually a reflection of
165
156
  # another irrational behavior of YouTube API. In short, if you ask for
166
- # the "earnings" metric of a day in which a channel made 0 USD, then
167
- # the API returns "nil". But if you also for the "earnings" metric AND
157
+ # the "estimated_revenue" metric of a day in which a channel made 0 USD, then
158
+ # the API returns "nil". But if you also for the "estimated_revenue" metric AND
168
159
  # the "estimatedMinutesWatched" metric, then the API returns the
169
160
  # correct value of "0", while still returning nil for those days in
170
- # which the earnings have not been estimated yet.
161
+ # which the estimated_revenue have not been estimated yet.
171
162
  context 'in which the channel did not make any money' do
172
- let(:zero_date) { ENV['YT_TEST_PARTNER_CHANNEL_NO_EARNINGS_DATE'] }
173
- let(:earnings) { channel.earnings_on zero_date}
174
- it { expect(earnings).to eq 0 }
163
+ let(:zero_date) { ENV['YT_TEST_PARTNER_CHANNEL_NO_estimated_revenue_DATE'] }
164
+ let(:estimated_revenue) { channel.estimated_revenue_on zero_date}
165
+ it { expect(estimated_revenue).to eq 0 }
175
166
  end
176
167
  end
177
168
 
178
- describe 'earnings can be retrieved for a single country' do
169
+ describe 'estimated_revenue can be retrieved for a single country' do
179
170
  let(:country_code) { 'US' }
180
- let(:earnings) { channel.earnings since: date, by: by, in: location }
171
+ let(:estimated_revenue) { channel.estimated_revenue since: date, by: by, in: location }
181
172
  let(:date) { 4.days.ago }
182
173
 
183
174
  context 'and grouped by day' do
@@ -185,12 +176,12 @@ describe Yt::Channel, :partner do
185
176
 
186
177
  context 'with the :in option set to the country code' do
187
178
  let(:location) { country_code }
188
- it { expect(earnings.keys.min).to eq date.to_date }
179
+ it { expect(estimated_revenue.keys.min).to eq date.to_date }
189
180
  end
190
181
 
191
182
  context 'with the :in option set to {country: country code}' do
192
183
  let(:location) { {country: country_code} }
193
- it { expect(earnings.keys.min).to eq date.to_date }
184
+ it { expect(estimated_revenue.keys.min).to eq date.to_date }
194
185
  end
195
186
  end
196
187
 
@@ -199,34 +190,34 @@ describe Yt::Channel, :partner do
199
190
 
200
191
  context 'with the :in option set to the country code' do
201
192
  let(:location) { country_code }
202
- it { expect(earnings.keys).to eq [country_code] }
193
+ it { expect(estimated_revenue.keys).to eq [country_code] }
203
194
  end
204
195
 
205
196
  context 'with the :in option set to {country: country code}' do
206
197
  let(:location) { {country: country_code} }
207
- it { expect(earnings.keys).to eq [country_code] }
198
+ it { expect(estimated_revenue.keys).to eq [country_code] }
208
199
  end
209
200
  end
210
201
  end
211
202
 
212
- describe 'earnings can be grouped by day' do
203
+ describe 'estimated_revenue can be grouped by day' do
213
204
  let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
214
205
  let(:keys) { range.values }
215
206
 
216
207
  specify 'with the :by option set to :day' do
217
- earnings = channel.earnings range.merge by: :day
218
- expect(earnings.keys).to eq range.values
208
+ estimated_revenue = channel.estimated_revenue range.merge by: :day
209
+ expect(estimated_revenue.keys).to eq range.values
219
210
  end
220
211
  end
221
212
 
222
- describe 'earnings can be grouped by country' do
213
+ describe 'estimated_revenue can be grouped by country' do
223
214
  let(:range) { {since: 4.days.ago, until: 3.days.ago} }
224
215
 
225
216
  specify 'with the :by option set to :country' do
226
- earnings = channel.earnings range.merge by: :country
227
- expect(earnings.keys).to all(be_a String)
228
- expect(earnings.keys.map(&:length).uniq).to eq [2]
229
- expect(earnings.values).to all(be_a Float)
217
+ estimated_revenue = channel.estimated_revenue range.merge by: :country
218
+ expect(estimated_revenue.keys).to all(be_a String)
219
+ expect(estimated_revenue.keys.map(&:length).uniq).to eq [2]
220
+ expect(estimated_revenue.values).to all(be_a Float)
230
221
  end
231
222
  end
232
223
 
@@ -496,56 +487,6 @@ describe Yt::Channel, :partner do
496
487
  end
497
488
  end
498
489
 
499
- describe 'uniques can be retrieved for a single country' do
500
- let(:country_code) { 'US' }
501
- let(:uniques) { channel.uniques since: date, by: by, in: location }
502
- let(:date) { 4.days.ago }
503
-
504
- context 'and grouped by day' do
505
- let(:by) { :day }
506
-
507
- context 'with the :in option set to the country code' do
508
- let(:location) { country_code }
509
- it { expect(uniques.keys.min).to eq date.to_date }
510
- end
511
-
512
- context 'with the :in option set to {country: country code}' do
513
- let(:location) { {country: country_code} }
514
- it { expect(uniques.keys.min).to eq date.to_date }
515
- end
516
- end
517
- end
518
-
519
- describe 'uniques can be retrieved for a single US state' do
520
- let(:state_code) { 'NY' }
521
- let(:result) { channel.uniques since: date, by: by, in: location }
522
- let(:date) { 4.days.ago }
523
-
524
- context 'and grouped by day' do
525
- let(:by) { :day }
526
-
527
- context 'with the :in option set to {state: state code}' do
528
- let(:location) { {state: state_code} }
529
- it { expect(result.keys.min).to eq date.to_date }
530
- end
531
-
532
- context 'with the :in option set to {country: "US", state: state code}' do
533
- let(:location) { {country: 'US', state: state_code} }
534
- it { expect(result.keys.min).to eq date.to_date }
535
- end
536
- end
537
- end
538
-
539
- describe 'uniques can be grouped by day' do
540
- let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
541
- let(:keys) { range.values }
542
-
543
- specify 'with the :by option set to :day' do
544
- uniques = channel.uniques range.merge by: :day
545
- expect(uniques.keys).to eq range.values
546
- end
547
- end
548
-
549
490
  describe 'comments can be retrieved for a single country' do
550
491
  let(:country_code) { 'US' }
551
492
  let(:comments) { channel.comments since: date, by: by, in: location }
@@ -876,116 +817,6 @@ describe Yt::Channel, :partner do
876
817
  end
877
818
  end
878
819
 
879
- describe 'favorites added can be retrieved for a single country' do
880
- let(:country_code) { 'US' }
881
- let(:favorites_added) { channel.favorites_added since: date, by: by, in: location }
882
- let(:date) { ENV['YT_TEST_PARTNER_VIDEO_DATE'] }
883
-
884
- context 'and grouped by day' do
885
- let(:by) { :day }
886
-
887
- context 'with the :in option set to the country code' do
888
- let(:location) { country_code }
889
- it { expect(favorites_added.keys.min).to eq date.to_date }
890
- end
891
-
892
- context 'with the :in option set to {country: country code}' do
893
- let(:location) { {country: country_code} }
894
- it { expect(favorites_added.keys.min).to eq date.to_date }
895
- end
896
- end
897
-
898
- context 'and grouped by country' do
899
- let(:by) { :country }
900
-
901
- context 'with the :in option set to the country code' do
902
- let(:location) { country_code }
903
- it { expect(favorites_added.keys).to eq [country_code] }
904
- end
905
-
906
- context 'with the :in option set to {country: country code}' do
907
- let(:location) { {country: country_code} }
908
- it { expect(favorites_added.keys).to eq [country_code] }
909
- end
910
- end
911
- end
912
-
913
- describe 'added favorites can be grouped by day' do
914
- let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
915
- let(:keys) { range.values }
916
-
917
- specify 'with the :by option set to :day' do
918
- favorites_added = channel.favorites_added range.merge by: :day
919
- expect(favorites_added.keys).to eq range.values
920
- end
921
- end
922
-
923
- describe 'added favorites can be grouped by country' do
924
- let(:range) { {since: 4.days.ago, until: 3.days.ago} }
925
-
926
- specify 'with the :by option set to :country' do
927
- favorites_added = channel.favorites_added range.merge by: :country
928
- expect(favorites_added.keys).to all(be_a String)
929
- expect(favorites_added.keys.map(&:length).uniq).to eq [2]
930
- expect(favorites_added.values).to all(be_an Integer)
931
- end
932
- end
933
-
934
- describe 'favorites removed can be retrieved for a single country' do
935
- let(:country_code) { 'US' }
936
- let(:favorites_removed) { channel.favorites_removed since: date, by: by, in: location }
937
- let(:date) { ENV['YT_TEST_PARTNER_VIDEO_DATE'] }
938
-
939
- context 'and grouped by day' do
940
- let(:by) { :day }
941
-
942
- context 'with the :in option set to the country code' do
943
- let(:location) { country_code }
944
- it { expect(favorites_removed.keys.min).to eq date.to_date }
945
- end
946
-
947
- context 'with the :in option set to {country: country code}' do
948
- let(:location) { {country: country_code} }
949
- it { expect(favorites_removed.keys.min).to eq date.to_date }
950
- end
951
- end
952
-
953
- context 'and grouped by country' do
954
- let(:by) { :country }
955
-
956
- context 'with the :in option set to the country code' do
957
- let(:location) { country_code }
958
- it { expect(favorites_removed.keys).to eq [country_code] }
959
- end
960
-
961
- context 'with the :in option set to {country: country code}' do
962
- let(:location) { {country: country_code} }
963
- it { expect(favorites_removed.keys).to eq [country_code] }
964
- end
965
- end
966
- end
967
-
968
- describe 'removed favorites can be grouped by day' do
969
- let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
970
- let(:keys) { range.values }
971
-
972
- specify 'with the :by option set to :day' do
973
- favorites_removed = channel.favorites_removed range.merge by: :day
974
- expect(favorites_removed.keys).to eq range.values
975
- end
976
- end
977
-
978
- describe 'removed favorites can be grouped by country' do
979
- let(:range) { {since: ENV['YT_TEST_PARTNER_VIDEO_DATE'], until: Date.parse(ENV['YT_TEST_PARTNER_VIDEO_DATE']) + 5} }
980
-
981
- specify 'with the :by option set to :country' do
982
- favorites_removed = channel.favorites_removed range.merge by: :country
983
- expect(favorites_removed.keys).to all(be_a String)
984
- expect(favorites_removed.keys.map(&:length).uniq).to eq [2]
985
- expect(favorites_removed.values).to all(be_an Integer)
986
- end
987
- end
988
-
989
820
  describe 'videos added to playlists can be retrieved for a single country' do
990
821
  let(:country_code) { 'US' }
991
822
  let(:videos_added_to_playlists) { channel.videos_added_to_playlists since: date, by: by, in: location }
@@ -1020,27 +851,6 @@ describe Yt::Channel, :partner do
1020
851
  end
1021
852
  end
1022
853
 
1023
- describe 'added favorites can be grouped by day' do
1024
- let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
1025
- let(:keys) { range.values }
1026
-
1027
- specify 'with the :by option set to :day' do
1028
- videos_added_to_playlists = channel.videos_added_to_playlists range.merge by: :day
1029
- expect(videos_added_to_playlists.keys).to eq range.values
1030
- end
1031
- end
1032
-
1033
- describe 'added favorites can be grouped by country' do
1034
- let(:range) { {since: 4.days.ago, until: 3.days.ago} }
1035
-
1036
- specify 'with the :by option set to :country' do
1037
- videos_added_to_playlists = channel.videos_added_to_playlists range.merge by: :country
1038
- expect(videos_added_to_playlists.keys).to all(be_a String)
1039
- expect(videos_added_to_playlists.keys.map(&:length).uniq).to eq [2]
1040
- expect(videos_added_to_playlists.values).to all(be_an Integer)
1041
- end
1042
- end
1043
-
1044
854
  describe 'videos removed from playlists can be retrieved for a single country' do
1045
855
  let(:country_code) { 'US' }
1046
856
  let(:videos_removed_from_playlists) { channel.videos_removed_from_playlists since: date, by: by, in: location }
@@ -1075,27 +885,6 @@ describe Yt::Channel, :partner do
1075
885
  end
1076
886
  end
1077
887
 
1078
- describe 'removed favorites can be grouped by day' do
1079
- let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
1080
- let(:keys) { range.values }
1081
-
1082
- specify 'with the :by option set to :day' do
1083
- videos_removed_from_playlists = channel.videos_removed_from_playlists range.merge by: :day
1084
- expect(videos_removed_from_playlists.keys).to eq range.values
1085
- end
1086
- end
1087
-
1088
- describe 'removed favorites can be grouped by country' do
1089
- let(:range) { {since: ENV['YT_TEST_PARTNER_VIDEO_DATE'], until: Date.parse(ENV['YT_TEST_PARTNER_VIDEO_DATE']) + 5} }
1090
-
1091
- specify 'with the :by option set to :country' do
1092
- videos_removed_from_playlists = channel.videos_removed_from_playlists range.merge by: :country
1093
- expect(videos_removed_from_playlists.keys).to all(be_a String)
1094
- expect(videos_removed_from_playlists.keys.map(&:length).uniq).to eq [2]
1095
- expect(videos_removed_from_playlists.values).to all(be_an Integer)
1096
- end
1097
- end
1098
-
1099
888
  describe 'estimated minutes watched can be retrieved for a single country' do
1100
889
  let(:country_code) { 'US' }
1101
890
  let(:estimated_minutes_watched) { channel.estimated_minutes_watched since: date, by: by, in: location }
@@ -1480,9 +1269,9 @@ describe Yt::Channel, :partner do
1480
1269
  end
1481
1270
  end
1482
1271
 
1483
- describe 'impressions can be retrieved for a single country' do
1272
+ describe 'ad_impressions can be retrieved for a single country' do
1484
1273
  let(:country_code) { 'US' }
1485
- let(:impressions) { channel.impressions since: date, by: by, in: location }
1274
+ let(:ad_impressions) { channel.ad_impressions since: date, by: by, in: location }
1486
1275
  let(:date) { ENV['YT_TEST_PARTNER_PLAYLIST_DATE'] }
1487
1276
 
1488
1277
  context 'and grouped by day' do
@@ -1490,12 +1279,12 @@ describe Yt::Channel, :partner do
1490
1279
 
1491
1280
  context 'with the :in option set to the country code' do
1492
1281
  let(:location) { country_code }
1493
- it { expect(impressions.keys.min).to eq date.to_date }
1282
+ it { expect(ad_impressions.keys.min).to eq date.to_date }
1494
1283
  end
1495
1284
 
1496
1285
  context 'with the :in option set to {country: country code}' do
1497
1286
  let(:location) { {country: country_code} }
1498
- it { expect(impressions.keys.min).to eq date.to_date }
1287
+ it { expect(ad_impressions.keys.min).to eq date.to_date }
1499
1288
  end
1500
1289
  end
1501
1290
 
@@ -1504,34 +1293,34 @@ describe Yt::Channel, :partner do
1504
1293
 
1505
1294
  context 'with the :in option set to the country code' do
1506
1295
  let(:location) { country_code }
1507
- it { expect(impressions.keys).to eq [country_code] }
1296
+ it { expect(ad_impressions.keys).to eq [country_code] }
1508
1297
  end
1509
1298
 
1510
1299
  context 'with the :in option set to {country: country code}' do
1511
1300
  let(:location) { {country: country_code} }
1512
- it { expect(impressions.keys).to eq [country_code] }
1301
+ it { expect(ad_impressions.keys).to eq [country_code] }
1513
1302
  end
1514
1303
  end
1515
1304
  end
1516
1305
 
1517
- describe 'impressions can be grouped by day' do
1306
+ describe 'ad_impressions can be grouped by day' do
1518
1307
  let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
1519
1308
  let(:keys) { range.values }
1520
1309
 
1521
1310
  specify 'with the :by option set to :day' do
1522
- impressions = channel.impressions range.merge by: :day
1523
- expect(impressions.keys).to eq range.values
1311
+ ad_impressions = channel.ad_impressions range.merge by: :day
1312
+ expect(ad_impressions.keys).to eq range.values
1524
1313
  end
1525
1314
  end
1526
1315
 
1527
- describe 'impressions can be grouped by country' do
1316
+ describe 'ad_impressions can be grouped by country' do
1528
1317
  let(:range) { {since: ENV['YT_TEST_PARTNER_PLAYLIST_DATE']} }
1529
1318
 
1530
1319
  specify 'with the :by option set to :country' do
1531
- impressions = channel.impressions range.merge by: :country
1532
- expect(impressions.keys).to all(be_a String)
1533
- expect(impressions.keys.map(&:length).uniq).to eq [2]
1534
- expect(impressions.values).to all(be_an Integer)
1320
+ ad_impressions = channel.ad_impressions range.merge by: :country
1321
+ expect(ad_impressions.keys).to all(be_a String)
1322
+ expect(ad_impressions.keys.map(&:length).uniq).to eq [2]
1323
+ expect(ad_impressions.values).to all(be_an Integer)
1535
1324
  end
1536
1325
  end
1537
1326
 
@@ -2033,8 +1822,8 @@ describe Yt::Channel, :partner do
2033
1822
  context 'not managed by the authenticated Content Owner' do
2034
1823
  let(:id) { 'UCBR8-60-B28hp2BmDPdntcQ' }
2035
1824
 
2036
- specify 'earnings and impressions cannot be retrieved' do
2037
- expect{channel.earnings}.to raise_error Yt::Errors::Forbidden
1825
+ specify 'estimated_revenue and ad_impressions cannot be retrieved' do
1826
+ expect{channel.estimated_revenue}.to raise_error Yt::Errors::Forbidden
2038
1827
  expect{channel.views}.to raise_error Yt::Errors::Forbidden
2039
1828
  end
2040
1829
 
@@ -2044,4 +1833,4 @@ describe Yt::Channel, :partner do
2044
1833
  end
2045
1834
  end
2046
1835
  end
2047
- end
1836
+ end