yt 0.27.0 → 0.28.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/yt.rb +1 -1
- data/lib/yt/associations/has_reports.rb +2 -2
- data/lib/yt/collections/reports.rb +3 -3
- data/lib/yt/models/channel.rb +2 -2
- data/lib/yt/models/video.rb +2 -2
- data/lib/yt/models/video_group.rb +2 -2
- data/lib/yt/version.rb +1 -1
- data/spec/requests/as_account/channel_spec.rb +2 -2
- data/spec/requests/as_account/video_spec.rb +12 -12
- data/spec/requests/as_content_owner/channel_spec.rb +43 -43
- data/spec/requests/as_content_owner/video_group_spec.rb +1 -1
- data/spec/requests/as_content_owner/video_spec.rb +23 -23
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a5e55e68762b528cbc7c42e4fe7e22adf9281696
|
4
|
+
data.tar.gz: 90ee508824b125d5c3870033530892cf55d0f333
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da61fb4dcd83bd430f17be5c41d86fd77c943706ed515644ddefe633753f13d396bcf9c26805c95795881ea8e56fa87377fd41cb4fb9eacbbeaf0f9c46f36c3f
|
7
|
+
data.tar.gz: 4e640d95814a39547d4512ee9bdf5f96bc52370c3b0b70d41c8111f11326343464bf6d64087fed7b843406f5f7ef3d1836164a28241506a02b9eeee233c2b0ee
|
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,18 @@ For more information about changelogs, check
|
|
6
6
|
[Keep a Changelog](http://keepachangelog.com) and
|
7
7
|
[Vandamme](http://tech-angels.github.io/vandamme).
|
8
8
|
|
9
|
+
## 0.28.0 - 2016-10-18
|
10
|
+
|
11
|
+
**How to upgrade**
|
12
|
+
|
13
|
+
If your code calls `.earnings` and `.impressions`
|
14
|
+
then you must replace that code with `.estimated_revenue` and
|
15
|
+
`.ad_impressions` since those metrics will no longer be supported by
|
16
|
+
YouTube API as of [November 4, 2016](https://developers.google.com/youtube/analytics/revision_history#august-10-2016).
|
17
|
+
|
18
|
+
* [breaking change] Change deprecated `earnings` to `estimated_revenue`
|
19
|
+
* [breaking change] Change deprecated `impressions` to `ad_impressions`
|
20
|
+
|
9
21
|
## 0.27.0 - 2016-10-07
|
10
22
|
|
11
23
|
**How to upgrade**
|
data/lib/yt.rb
CHANGED
@@ -18,7 +18,7 @@ require 'yt/models/advertising_options_set'
|
|
18
18
|
# An object-oriented Ruby client for YouTube.
|
19
19
|
# Helps creating applications that need to interact with YouTube objects.
|
20
20
|
# Inclused methods to access YouTube Data API V3 resources (channels, videos,
|
21
|
-
# ...), YouTube Analytics API V2 resources (metrics,
|
21
|
+
# ...), YouTube Analytics API V2 resources (metrics, estimated_revenue, ...), and
|
22
22
|
# objects not available through the API (annotations).
|
23
23
|
module Yt
|
24
24
|
end
|
@@ -299,11 +299,11 @@ module Yt
|
|
299
299
|
|
300
300
|
def define_all_metric_method(metric, type)
|
301
301
|
define_method "all_#{metric}" do
|
302
|
-
# @note Asking for the "
|
302
|
+
# @note Asking for the "estimated_revenue" metric of a day in which a channel
|
303
303
|
# made 0 USD returns the wrong "nil". But adding to the request the
|
304
304
|
# "estimatedMinutesWatched" metric returns the correct value 0.
|
305
305
|
metrics = {metric => type}
|
306
|
-
metrics[:estimated_minutes_watched] = Integer if metric == :
|
306
|
+
metrics[:estimated_minutes_watched] = Integer if metric == :estimated_revenue
|
307
307
|
Collections::Reports.of(self).tap{|reports| reports.metrics = metrics}
|
308
308
|
end
|
309
309
|
private "all_#{metric}"
|
@@ -136,7 +136,7 @@ module Yt
|
|
136
136
|
elsif dimension.in? [:traffic_source, :country, :state, :playback_location, :device_type, :operating_system, :subscribed_status]
|
137
137
|
hash = hash.transform_values{|h| h.sort_by{|range, v| -v}.to_h}
|
138
138
|
end
|
139
|
-
(@metrics.one? || @metrics.keys == [:
|
139
|
+
(@metrics.one? || @metrics.keys == [:estimated_revenue, :estimated_minutes_watched]) ? hash[@metrics.keys.first] : hash
|
140
140
|
end
|
141
141
|
# NOTE: Once in a while, YouTube responds with 400 Error and the message
|
142
142
|
# "Invalid query. Query did not conform to the expectations."; in this
|
@@ -179,8 +179,8 @@ module Yt
|
|
179
179
|
params['max-results'] = 50 if @dimension.in? [:playlist, :video]
|
180
180
|
params['max-results'] = 25 if @dimension.in? [:embedded_player_location, :related_video, :search_term, :referrer]
|
181
181
|
if @dimension.in? [:video, :playlist, :embedded_player_location, :related_video, :search_term, :referrer]
|
182
|
-
if @metrics.keys == [:
|
183
|
-
params['sort'] = '-
|
182
|
+
if @metrics.keys == [:estimated_revenue, :estimated_minutes_watched]
|
183
|
+
params['sort'] = '-estimatedRevenue'
|
184
184
|
else
|
185
185
|
params['sort'] = "-#{@metrics.keys.join(',').to_s.camelize(:lower)}"
|
186
186
|
end
|
data/lib/yt/models/channel.rb
CHANGED
@@ -181,10 +181,10 @@ module Yt
|
|
181
181
|
has_report :card_teaser_click_rate, Float
|
182
182
|
|
183
183
|
# @macro report_by_day_and_country
|
184
|
-
has_report :
|
184
|
+
has_report :estimated_revenue, Float
|
185
185
|
|
186
186
|
# @macro report_by_day_and_country
|
187
|
-
has_report :
|
187
|
+
has_report :ad_impressions, Integer
|
188
188
|
|
189
189
|
# @macro report_by_day_and_country
|
190
190
|
has_report :monetized_playbacks, Integer
|
data/lib/yt/models/video.rb
CHANGED
@@ -464,10 +464,10 @@ module Yt
|
|
464
464
|
has_report :card_teaser_click_rate, Float
|
465
465
|
|
466
466
|
# @macro report_by_day_and_country
|
467
|
-
has_report :
|
467
|
+
has_report :estimated_revenue, Float
|
468
468
|
|
469
469
|
# @macro report_by_day_and_country
|
470
|
-
has_report :
|
470
|
+
has_report :ad_impressions, Integer
|
471
471
|
|
472
472
|
# @macro report_by_day_and_country
|
473
473
|
has_report :monetized_playbacks, Integer
|
@@ -90,10 +90,10 @@ module Yt
|
|
90
90
|
has_report :annotation_close_rate, Float
|
91
91
|
|
92
92
|
# @macro report_by_day_and_country
|
93
|
-
has_report :
|
93
|
+
has_report :estimated_revenue, Float
|
94
94
|
|
95
95
|
# @macro report_by_day_and_country
|
96
|
-
has_report :
|
96
|
+
has_report :ad_impressions, Integer
|
97
97
|
|
98
98
|
# @macro report_by_day_and_country
|
99
99
|
has_report :monetized_playbacks, Integer
|
data/lib/yt/version.rb
CHANGED
@@ -215,8 +215,8 @@ describe Yt::Channel, :device_app do
|
|
215
215
|
expect{channel.card_teaser_clicks}.not_to raise_error
|
216
216
|
expect{channel.card_teaser_click_rate}.not_to raise_error
|
217
217
|
expect{channel.viewer_percentage}.not_to raise_error
|
218
|
-
expect{channel.
|
219
|
-
expect{channel.
|
218
|
+
expect{channel.estimated_revenue}.to raise_error Yt::Errors::Unauthorized
|
219
|
+
expect{channel.ad_impressions}.to raise_error Yt::Errors::Unauthorized
|
220
220
|
expect{channel.monetized_playbacks}.to raise_error Yt::Errors::Unauthorized
|
221
221
|
expect{channel.playback_based_cpm}.to raise_error Yt::Errors::Unauthorized
|
222
222
|
end
|
@@ -305,8 +305,8 @@ describe Yt::Video, :device_app do
|
|
305
305
|
expect{video.card_teaser_clicks}.not_to raise_error
|
306
306
|
expect{video.card_teaser_click_rate}.not_to raise_error
|
307
307
|
expect{video.viewer_percentage}.not_to raise_error
|
308
|
-
expect{video.
|
309
|
-
expect{video.
|
308
|
+
expect{video.estimated_revenue}.to raise_error Yt::Errors::Unauthorized
|
309
|
+
expect{video.ad_impressions}.to raise_error Yt::Errors::Unauthorized
|
310
310
|
expect{video.monetized_playbacks}.to raise_error Yt::Errors::Unauthorized
|
311
311
|
expect{video.playback_based_cpm}.to raise_error Yt::Errors::Unauthorized
|
312
312
|
expect{video.advertising_options_set}.to raise_error Yt::Errors::Forbidden
|
@@ -710,8 +710,8 @@ describe Yt::Video, :device_app do
|
|
710
710
|
expect{video.annotation_click_through_rate}.not_to raise_error
|
711
711
|
expect{video.annotation_close_rate}.not_to raise_error
|
712
712
|
expect{video.viewer_percentage}.not_to raise_error
|
713
|
-
expect{video.
|
714
|
-
expect{video.
|
713
|
+
expect{video.estimated_revenue}.to raise_error Yt::Errors::Unauthorized
|
714
|
+
expect{video.ad_impressions}.to raise_error Yt::Errors::Unauthorized
|
715
715
|
expect{video.monetized_playbacks}.to raise_error Yt::Errors::Unauthorized
|
716
716
|
expect{video.playback_based_cpm}.to raise_error Yt::Errors::Unauthorized
|
717
717
|
expect{video.advertising_options_set}.to raise_error Yt::Errors::Forbidden
|
@@ -1096,8 +1096,8 @@ describe Yt::Video, :device_app do
|
|
1096
1096
|
expect{video.annotation_click_through_rate}.not_to raise_error
|
1097
1097
|
expect{video.annotation_close_rate}.not_to raise_error
|
1098
1098
|
expect{video.viewer_percentage}.not_to raise_error
|
1099
|
-
expect{video.
|
1100
|
-
expect{video.
|
1099
|
+
expect{video.estimated_revenue}.to raise_error Yt::Errors::Unauthorized
|
1100
|
+
expect{video.ad_impressions}.to raise_error Yt::Errors::Unauthorized
|
1101
1101
|
expect{video.monetized_playbacks}.to raise_error Yt::Errors::Unauthorized
|
1102
1102
|
expect{video.playback_based_cpm}.to raise_error Yt::Errors::Unauthorized
|
1103
1103
|
expect{video.advertising_options_set}.to raise_error Yt::Errors::Forbidden
|
@@ -1501,8 +1501,8 @@ describe Yt::Video, :device_app do
|
|
1501
1501
|
expect{video.annotation_click_through_rate}.not_to raise_error
|
1502
1502
|
expect{video.annotation_close_rate}.not_to raise_error
|
1503
1503
|
expect{video.viewer_percentage}.not_to raise_error
|
1504
|
-
expect{video.
|
1505
|
-
expect{video.
|
1504
|
+
expect{video.estimated_revenue}.to raise_error Yt::Errors::Unauthorized
|
1505
|
+
expect{video.ad_impressions}.to raise_error Yt::Errors::Unauthorized
|
1506
1506
|
expect{video.monetized_playbacks}.to raise_error Yt::Errors::Unauthorized
|
1507
1507
|
expect{video.playback_based_cpm}.to raise_error Yt::Errors::Unauthorized
|
1508
1508
|
expect{video.advertising_options_set}.to raise_error Yt::Errors::Forbidden
|
@@ -1906,8 +1906,8 @@ describe Yt::Video, :device_app do
|
|
1906
1906
|
expect{video.annotation_click_through_rate}.not_to raise_error
|
1907
1907
|
expect{video.annotation_close_rate}.not_to raise_error
|
1908
1908
|
expect{video.viewer_percentage}.not_to raise_error
|
1909
|
-
expect{video.
|
1910
|
-
expect{video.
|
1909
|
+
expect{video.estimated_revenue}.to raise_error Yt::Errors::Unauthorized
|
1910
|
+
expect{video.ad_impressions}.to raise_error Yt::Errors::Unauthorized
|
1911
1911
|
expect{video.monetized_playbacks}.to raise_error Yt::Errors::Unauthorized
|
1912
1912
|
expect{video.playback_based_cpm}.to raise_error Yt::Errors::Unauthorized
|
1913
1913
|
expect{video.advertising_options_set}.to raise_error Yt::Errors::Forbidden
|
@@ -2312,8 +2312,8 @@ describe Yt::Video, :device_app do
|
|
2312
2312
|
expect{video.annotation_click_through_rate}.not_to raise_error
|
2313
2313
|
expect{video.annotation_close_rate}.not_to raise_error
|
2314
2314
|
expect{video.viewer_percentage}.not_to raise_error
|
2315
|
-
expect{video.
|
2316
|
-
expect{video.
|
2315
|
+
expect{video.estimated_revenue}.to raise_error Yt::Errors::Unauthorized
|
2316
|
+
expect{video.ad_impressions}.to raise_error Yt::Errors::Unauthorized
|
2317
2317
|
expect{video.monetized_playbacks}.to raise_error Yt::Errors::Unauthorized
|
2318
2318
|
expect{video.playback_based_cpm}.to raise_error Yt::Errors::Unauthorized
|
2319
2319
|
expect{video.advertising_options_set}.to raise_error Yt::Errors::Forbidden
|
@@ -22,7 +22,7 @@ describe Yt::Channel, :partner do
|
|
22
22
|
card_impressions: Integer, card_clicks: Integer,
|
23
23
|
card_click_rate: Float, card_teaser_impressions: Integer,
|
24
24
|
card_teaser_clicks: Integer, card_teaser_click_rate: Float,
|
25
|
-
|
25
|
+
estimated_revenue: Float, ad_impressions: Integer,
|
26
26
|
monetized_playbacks: Integer, playback_based_cpm: Float}
|
27
27
|
specify 'by day, and are chronologically sorted' do
|
28
28
|
range = {since: 5.days.ago.to_date, until: 3.days.ago.to_date}
|
@@ -63,11 +63,11 @@ describe Yt::Channel, :partner do
|
|
63
63
|
:subscribers_gained, :subscribers_lost,
|
64
64
|
:videos_added_to_playlists, :videos_removed_from_playlists,
|
65
65
|
:estimated_minutes_watched, :average_view_duration,
|
66
|
-
:average_view_percentage, :
|
66
|
+
:average_view_percentage, :ad_impressions, :monetized_playbacks,
|
67
67
|
:annotation_clicks, :annotation_click_through_rate,
|
68
68
|
:card_impressions, :card_clicks, :card_click_rate,
|
69
69
|
:card_teaser_impressions, :card_teaser_clicks, :card_teaser_click_rate,
|
70
|
-
:playback_based_cpm, :annotation_close_rate, :
|
70
|
+
:playback_based_cpm, :annotation_close_rate, :estimated_revenue].each do |metric|
|
71
71
|
describe "#{metric} can be retrieved for a range of days" do
|
72
72
|
let(:date_in) { ENV['YT_TEST_PARTNER_VIDEO_DATE'] }
|
73
73
|
let(:date_out) { Date.parse(ENV['YT_TEST_PARTNER_VIDEO_DATE']) + 5 }
|
@@ -126,10 +126,10 @@ describe Yt::Channel, :partner do
|
|
126
126
|
card_click_rate: Float, card_teaser_impressions: Integer,
|
127
127
|
card_teaser_clicks: Integer, card_teaser_click_rate: Float,
|
128
128
|
videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
|
129
|
-
average_view_percentage: Float,
|
129
|
+
average_view_percentage: Float, ad_impressions: Integer,
|
130
130
|
shares: Integer, playback_based_cpm: Float,
|
131
131
|
monetized_playbacks: Integer, annotation_close_rate: Float,
|
132
|
-
|
132
|
+
estimated_revenue: Float}.each do |metric, type|
|
133
133
|
describe "#{metric} can be grouped by range" do
|
134
134
|
let(:metric) { metric }
|
135
135
|
|
@@ -151,24 +151,24 @@ describe Yt::Channel, :partner do
|
|
151
151
|
end
|
152
152
|
end
|
153
153
|
|
154
|
-
describe '
|
154
|
+
describe 'estimated_revenue can be retrieved for a specific day' do
|
155
155
|
# NOTE: This test sounds redundant, but it’s actually a reflection of
|
156
156
|
# another irrational behavior of YouTube API. In short, if you ask for
|
157
|
-
# the "
|
158
|
-
# the API returns "nil". But if you also for the "
|
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
|
159
159
|
# the "estimatedMinutesWatched" metric, then the API returns the
|
160
160
|
# correct value of "0", while still returning nil for those days in
|
161
|
-
# which the
|
161
|
+
# which the estimated_revenue have not been estimated yet.
|
162
162
|
context 'in which the channel did not make any money' do
|
163
|
-
let(:zero_date) { ENV['
|
164
|
-
let(:
|
165
|
-
it { expect(
|
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 }
|
166
166
|
end
|
167
167
|
end
|
168
168
|
|
169
|
-
describe '
|
169
|
+
describe 'estimated_revenue can be retrieved for a single country' do
|
170
170
|
let(:country_code) { 'US' }
|
171
|
-
let(:
|
171
|
+
let(:estimated_revenue) { channel.estimated_revenue since: date, by: by, in: location }
|
172
172
|
let(:date) { 4.days.ago }
|
173
173
|
|
174
174
|
context 'and grouped by day' do
|
@@ -176,12 +176,12 @@ describe Yt::Channel, :partner do
|
|
176
176
|
|
177
177
|
context 'with the :in option set to the country code' do
|
178
178
|
let(:location) { country_code }
|
179
|
-
it { expect(
|
179
|
+
it { expect(estimated_revenue.keys.min).to eq date.to_date }
|
180
180
|
end
|
181
181
|
|
182
182
|
context 'with the :in option set to {country: country code}' do
|
183
183
|
let(:location) { {country: country_code} }
|
184
|
-
it { expect(
|
184
|
+
it { expect(estimated_revenue.keys.min).to eq date.to_date }
|
185
185
|
end
|
186
186
|
end
|
187
187
|
|
@@ -190,34 +190,34 @@ describe Yt::Channel, :partner do
|
|
190
190
|
|
191
191
|
context 'with the :in option set to the country code' do
|
192
192
|
let(:location) { country_code }
|
193
|
-
it { expect(
|
193
|
+
it { expect(estimated_revenue.keys).to eq [country_code] }
|
194
194
|
end
|
195
195
|
|
196
196
|
context 'with the :in option set to {country: country code}' do
|
197
197
|
let(:location) { {country: country_code} }
|
198
|
-
it { expect(
|
198
|
+
it { expect(estimated_revenue.keys).to eq [country_code] }
|
199
199
|
end
|
200
200
|
end
|
201
201
|
end
|
202
202
|
|
203
|
-
describe '
|
203
|
+
describe 'estimated_revenue can be grouped by day' do
|
204
204
|
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
205
205
|
let(:keys) { range.values }
|
206
206
|
|
207
207
|
specify 'with the :by option set to :day' do
|
208
|
-
|
209
|
-
expect(
|
208
|
+
estimated_revenue = channel.estimated_revenue range.merge by: :day
|
209
|
+
expect(estimated_revenue.keys).to eq range.values
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
213
|
-
describe '
|
213
|
+
describe 'estimated_revenue can be grouped by country' do
|
214
214
|
let(:range) { {since: 4.days.ago, until: 3.days.ago} }
|
215
215
|
|
216
216
|
specify 'with the :by option set to :country' do
|
217
|
-
|
218
|
-
expect(
|
219
|
-
expect(
|
220
|
-
expect(
|
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)
|
221
221
|
end
|
222
222
|
end
|
223
223
|
|
@@ -1319,9 +1319,9 @@ describe Yt::Channel, :partner do
|
|
1319
1319
|
end
|
1320
1320
|
end
|
1321
1321
|
|
1322
|
-
describe '
|
1322
|
+
describe 'ad_impressions can be retrieved for a single country' do
|
1323
1323
|
let(:country_code) { 'US' }
|
1324
|
-
let(:
|
1324
|
+
let(:ad_impressions) { channel.ad_impressions since: date, by: by, in: location }
|
1325
1325
|
let(:date) { ENV['YT_TEST_PARTNER_PLAYLIST_DATE'] }
|
1326
1326
|
|
1327
1327
|
context 'and grouped by day' do
|
@@ -1329,12 +1329,12 @@ describe Yt::Channel, :partner do
|
|
1329
1329
|
|
1330
1330
|
context 'with the :in option set to the country code' do
|
1331
1331
|
let(:location) { country_code }
|
1332
|
-
it { expect(
|
1332
|
+
it { expect(ad_impressions.keys.min).to eq date.to_date }
|
1333
1333
|
end
|
1334
1334
|
|
1335
1335
|
context 'with the :in option set to {country: country code}' do
|
1336
1336
|
let(:location) { {country: country_code} }
|
1337
|
-
it { expect(
|
1337
|
+
it { expect(ad_impressions.keys.min).to eq date.to_date }
|
1338
1338
|
end
|
1339
1339
|
end
|
1340
1340
|
|
@@ -1343,34 +1343,34 @@ describe Yt::Channel, :partner do
|
|
1343
1343
|
|
1344
1344
|
context 'with the :in option set to the country code' do
|
1345
1345
|
let(:location) { country_code }
|
1346
|
-
it { expect(
|
1346
|
+
it { expect(ad_impressions.keys).to eq [country_code] }
|
1347
1347
|
end
|
1348
1348
|
|
1349
1349
|
context 'with the :in option set to {country: country code}' do
|
1350
1350
|
let(:location) { {country: country_code} }
|
1351
|
-
it { expect(
|
1351
|
+
it { expect(ad_impressions.keys).to eq [country_code] }
|
1352
1352
|
end
|
1353
1353
|
end
|
1354
1354
|
end
|
1355
1355
|
|
1356
|
-
describe '
|
1356
|
+
describe 'ad_impressions can be grouped by day' do
|
1357
1357
|
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
1358
1358
|
let(:keys) { range.values }
|
1359
1359
|
|
1360
1360
|
specify 'with the :by option set to :day' do
|
1361
|
-
|
1362
|
-
expect(
|
1361
|
+
ad_impressions = channel.ad_impressions range.merge by: :day
|
1362
|
+
expect(ad_impressions.keys).to eq range.values
|
1363
1363
|
end
|
1364
1364
|
end
|
1365
1365
|
|
1366
|
-
describe '
|
1366
|
+
describe 'ad_impressions can be grouped by country' do
|
1367
1367
|
let(:range) { {since: ENV['YT_TEST_PARTNER_PLAYLIST_DATE']} }
|
1368
1368
|
|
1369
1369
|
specify 'with the :by option set to :country' do
|
1370
|
-
|
1371
|
-
expect(
|
1372
|
-
expect(
|
1373
|
-
expect(
|
1370
|
+
ad_impressions = channel.ad_impressions range.merge by: :country
|
1371
|
+
expect(ad_impressions.keys).to all(be_a String)
|
1372
|
+
expect(ad_impressions.keys.map(&:length).uniq).to eq [2]
|
1373
|
+
expect(ad_impressions.values).to all(be_an Integer)
|
1374
1374
|
end
|
1375
1375
|
end
|
1376
1376
|
|
@@ -1872,8 +1872,8 @@ describe Yt::Channel, :partner do
|
|
1872
1872
|
context 'not managed by the authenticated Content Owner' do
|
1873
1873
|
let(:id) { 'UCBR8-60-B28hp2BmDPdntcQ' }
|
1874
1874
|
|
1875
|
-
specify '
|
1876
|
-
expect{channel.
|
1875
|
+
specify 'estimated_revenue and ad_impressions cannot be retrieved' do
|
1876
|
+
expect{channel.estimated_revenue}.to raise_error Yt::Errors::Forbidden
|
1877
1877
|
expect{channel.views}.to raise_error Yt::Errors::Forbidden
|
1878
1878
|
end
|
1879
1879
|
|
@@ -1883,4 +1883,4 @@ describe Yt::Channel, :partner do
|
|
1883
1883
|
end
|
1884
1884
|
end
|
1885
1885
|
end
|
1886
|
-
end
|
1886
|
+
end
|
@@ -60,7 +60,7 @@ describe Yt::VideoGroup, :partner do
|
|
60
60
|
average_view_duration: Integer,
|
61
61
|
average_view_percentage: Float, annotation_clicks: Integer,
|
62
62
|
annotation_click_through_rate: Float,
|
63
|
-
annotation_close_rate: Float,
|
63
|
+
annotation_close_rate: Float, estimated_revenue: Float, ad_impressions: Integer,
|
64
64
|
monetized_playbacks: Integer}
|
65
65
|
|
66
66
|
specify 'by day, and are chronologically sorted' do
|
@@ -17,11 +17,11 @@ describe Yt::Video, :partner do
|
|
17
17
|
:subscribers_gained, :subscribers_lost,
|
18
18
|
:videos_added_to_playlists, :videos_removed_from_playlists,
|
19
19
|
:estimated_minutes_watched, :average_view_duration,
|
20
|
-
:average_view_percentage, :
|
20
|
+
:average_view_percentage, :ad_impressions, :monetized_playbacks,
|
21
21
|
:annotation_clicks, :annotation_click_through_rate, :playback_based_cpm,
|
22
22
|
:card_impressions, :card_clicks, :card_click_rate,
|
23
23
|
:card_teaser_impressions, :card_teaser_clicks, :card_teaser_click_rate,
|
24
|
-
:annotation_close_rate, :
|
24
|
+
:annotation_close_rate, :estimated_revenue].each do |metric|
|
25
25
|
describe "#{metric} can be retrieved for a range of days" do
|
26
26
|
let(:date_in) { ENV['YT_TEST_PARTNER_VIDEO_DATE'] }
|
27
27
|
let(:date_out) { Date.parse(ENV['YT_TEST_PARTNER_VIDEO_DATE']) + 5 }
|
@@ -94,13 +94,13 @@ describe Yt::Video, :partner do
|
|
94
94
|
shares: Integer, subscribers_gained: Integer, subscribers_lost: Integer,
|
95
95
|
videos_added_to_playlists: Integer, videos_removed_from_playlists: Integer,
|
96
96
|
estimated_minutes_watched: Integer, average_view_duration: Integer,
|
97
|
-
average_view_percentage: Float,
|
97
|
+
average_view_percentage: Float, ad_impressions: Integer,
|
98
98
|
monetized_playbacks: Integer, annotation_clicks: Integer,
|
99
99
|
annotation_click_through_rate: Float, annotation_close_rate: Float,
|
100
100
|
card_impressions: Integer, card_clicks: Integer,
|
101
101
|
card_click_rate: Float, card_teaser_impressions: Integer,
|
102
102
|
card_teaser_clicks: Integer, card_teaser_click_rate: Float,
|
103
|
-
|
103
|
+
estimated_revenue: Float}.each do |metric, type|
|
104
104
|
describe "#{metric} can be grouped by range" do
|
105
105
|
let(:metric) { metric }
|
106
106
|
|
@@ -126,11 +126,11 @@ describe Yt::Video, :partner do
|
|
126
126
|
:subscribers_gained, :subscribers_lost,
|
127
127
|
:videos_added_to_playlists, :videos_removed_from_playlists,
|
128
128
|
:estimated_minutes_watched, :average_view_duration,
|
129
|
-
:average_view_percentage, :
|
129
|
+
:average_view_percentage, :ad_impressions, :monetized_playbacks,
|
130
130
|
:card_impressions, :card_clicks, :card_click_rate,
|
131
131
|
:card_teaser_impressions, :card_teaser_clicks, :card_teaser_click_rate,
|
132
132
|
:annotation_clicks, :annotation_click_through_rate,
|
133
|
-
:annotation_close_rate, :
|
133
|
+
:annotation_close_rate, :estimated_revenue].each do |metric|
|
134
134
|
describe "#{metric} can be retrieved for a single country" do
|
135
135
|
let(:result) { video.public_send metric, options }
|
136
136
|
|
@@ -185,7 +185,7 @@ describe Yt::Video, :partner do
|
|
185
185
|
card_click_rate: Float, card_teaser_impressions: Integer,
|
186
186
|
card_teaser_clicks: Integer, card_teaser_click_rate: Float,
|
187
187
|
annotation_click_through_rate: Float,
|
188
|
-
annotation_close_rate: Float,
|
188
|
+
annotation_close_rate: Float, estimated_revenue: Float, ad_impressions: Integer,
|
189
189
|
monetized_playbacks: Integer}
|
190
190
|
|
191
191
|
specify 'by day' do
|
@@ -222,24 +222,24 @@ describe Yt::Video, :partner do
|
|
222
222
|
end
|
223
223
|
end
|
224
224
|
|
225
|
-
describe '
|
225
|
+
describe 'estimated_revenue can be grouped by day' do
|
226
226
|
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
227
227
|
let(:keys) { range.values }
|
228
228
|
|
229
229
|
specify 'with the :by option set to :day' do
|
230
|
-
|
231
|
-
expect(
|
230
|
+
estimated_revenue = video.estimated_revenue range.merge by: :day
|
231
|
+
expect(estimated_revenue.keys).to eq range.values
|
232
232
|
end
|
233
233
|
end
|
234
234
|
|
235
|
-
describe '
|
235
|
+
describe 'estimated_revenue can be grouped by country' do
|
236
236
|
let(:range) { {since: 4.days.ago, until: 3.days.ago} }
|
237
237
|
|
238
238
|
specify 'with the :by option set to :country' do
|
239
|
-
|
240
|
-
expect(
|
241
|
-
expect(
|
242
|
-
expect(
|
239
|
+
estimated_revenue = video.estimated_revenue range.merge by: :country
|
240
|
+
expect(estimated_revenue.keys).to all(be_a String)
|
241
|
+
expect(estimated_revenue.keys.map(&:length).uniq).to eq [2]
|
242
|
+
expect(estimated_revenue.values).to all(be_a Float)
|
243
243
|
end
|
244
244
|
end
|
245
245
|
|
@@ -874,24 +874,24 @@ describe Yt::Video, :partner do
|
|
874
874
|
end
|
875
875
|
end
|
876
876
|
|
877
|
-
describe '
|
877
|
+
describe 'ad_impressions can be grouped by day' do
|
878
878
|
let(:range) { {since: 4.days.ago.to_date, until: 3.days.ago.to_date} }
|
879
879
|
let(:keys) { range.values }
|
880
880
|
|
881
881
|
specify 'with the :by option set to :day' do
|
882
|
-
|
883
|
-
expect(
|
882
|
+
ad_impressions = video.ad_impressions range.merge by: :day
|
883
|
+
expect(ad_impressions.keys).to eq range.values
|
884
884
|
end
|
885
885
|
end
|
886
886
|
|
887
|
-
describe '
|
887
|
+
describe 'ad_impressions can be grouped by country' do
|
888
888
|
let(:range) { {since: ENV['YT_TEST_PARTNER_VIDEO_DATE']} }
|
889
889
|
|
890
890
|
specify 'with the :by option set to :country' do
|
891
|
-
|
892
|
-
expect(
|
893
|
-
expect(
|
894
|
-
expect(
|
891
|
+
ad_impressions = video.ad_impressions range.merge by: :country
|
892
|
+
expect(ad_impressions.keys).to all(be_a String)
|
893
|
+
expect(ad_impressions.keys.map(&:length).uniq).to eq [2]
|
894
|
+
expect(ad_impressions.values).to all(be_an Integer)
|
895
895
|
end
|
896
896
|
end
|
897
897
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.28.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claudio Baccigalupo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|