yt 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/Gemfile.lock +1 -1
  4. data/HISTORY.md +3 -0
  5. data/README.md +5 -1
  6. data/TODO.md +0 -2
  7. data/bin/yt +2 -0
  8. data/lib/yt/actions/delete_all.rb +2 -2
  9. data/lib/yt/associations/authentications.rb +17 -2
  10. data/lib/yt/collections/base.rb +6 -0
  11. data/lib/yt/collections/statuses.rb +22 -0
  12. data/lib/yt/collections/subscriptions.rb +1 -1
  13. data/lib/yt/collections/videos.rb +6 -1
  14. data/lib/yt/models/account.rb +6 -12
  15. data/lib/yt/models/base.rb +28 -2
  16. data/lib/yt/models/channel.rb +37 -2
  17. data/lib/yt/models/playlist.rb +24 -0
  18. data/lib/yt/models/video.rb +19 -0
  19. data/lib/yt/version.rb +1 -1
  20. data/spec/associations/device_auth/account_spec.rb +31 -0
  21. data/spec/associations/device_auth/channel_spec.rb +114 -0
  22. data/spec/associations/device_auth/content_owner_spec.rb +8 -0
  23. data/spec/associations/device_auth/earnings_spec.rb +2 -0
  24. data/spec/associations/device_auth/playlist_spec.rb +136 -0
  25. data/spec/associations/device_auth/{ids_spec.rb → resource_spec.rb} +2 -2
  26. data/spec/associations/device_auth/video_spec.rb +42 -0
  27. data/spec/associations/no_auth/video_spec.rb +13 -0
  28. data/spec/associations/server_auth/channel_spec.rb +50 -0
  29. data/spec/associations/server_auth/playlist_spec.rb +36 -0
  30. data/spec/associations/server_auth/{ids_spec.rb → resource_spec.rb} +2 -2
  31. data/spec/associations/server_auth/video_spec.rb +22 -0
  32. data/spec/models/channel_spec.rb +7 -0
  33. metadata +25 -60
  34. data/lib/yt/associations.rb +0 -38
  35. data/lib/yt/associations/annotations.rb +0 -15
  36. data/lib/yt/associations/channels.rb +0 -20
  37. data/lib/yt/associations/details_sets.rb +0 -20
  38. data/lib/yt/associations/ids.rb +0 -20
  39. data/lib/yt/associations/partnered_channels.rb +0 -14
  40. data/lib/yt/associations/playlist_items.rb +0 -34
  41. data/lib/yt/associations/playlists.rb +0 -22
  42. data/lib/yt/associations/ratings.rb +0 -39
  43. data/lib/yt/associations/snippets.rb +0 -20
  44. data/lib/yt/associations/statuses.rb +0 -14
  45. data/lib/yt/associations/subscriptions.rb +0 -34
  46. data/lib/yt/associations/user_infos.rb +0 -21
  47. data/lib/yt/associations/videos.rb +0 -14
  48. data/spec/associations/device_auth/channels_spec.rb +0 -8
  49. data/spec/associations/device_auth/details_sets_spec.rb +0 -18
  50. data/spec/associations/device_auth/partnered_channels_spec.rb +0 -15
  51. data/spec/associations/device_auth/playlist_items_spec.rb +0 -79
  52. data/spec/associations/device_auth/playlists_spec.rb +0 -61
  53. data/spec/associations/device_auth/ratings_spec.rb +0 -28
  54. data/spec/associations/device_auth/snippets_spec.rb +0 -28
  55. data/spec/associations/device_auth/subscriptions_spec.rb +0 -35
  56. data/spec/associations/device_auth/user_infos_spec.rb +0 -12
  57. data/spec/associations/device_auth/videos_spec.rb +0 -20
  58. data/spec/associations/no_auth/annotations_spec.rb +0 -15
  59. data/spec/associations/server_auth/channels_spec.rb +0 -2
  60. data/spec/associations/server_auth/details_sets_spec.rb +0 -18
  61. data/spec/associations/server_auth/playlist_items_spec.rb +0 -17
  62. data/spec/associations/server_auth/playlists_spec.rb +0 -17
  63. data/spec/associations/server_auth/ratings_spec.rb +0 -2
  64. data/spec/associations/server_auth/snippets_spec.rb +0 -28
  65. data/spec/associations/server_auth/subscriptions_spec.rb +0 -2
  66. data/spec/associations/server_auth/user_infos_spec.rb +0 -2
  67. data/spec/associations/server_auth/videos_spec.rb +0 -20
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/content_owner'
3
+
4
+ describe Yt::ContentOwner, :partner do
5
+ # NOTE: Uncomment once size does not runs through *all* the pages
6
+ # it { expect($content_owner.partnered_channels.size).to be > 0 }
7
+ it { expect($content_owner.partnered_channels.first).to be_a Yt::Channel }
8
+ end
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Yt::Associations::Earnings, :partner do
@@ -0,0 +1,136 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+ require 'yt/models/playlist'
5
+
6
+ describe Yt::Playlist, :device_app do
7
+ let(:playlist) { Yt::Playlist.new id: id, auth: $account }
8
+
9
+ describe '.snippet of existing playlist' do
10
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
11
+ it { expect(playlist.snippet).to be_a Yt::Snippet }
12
+ end
13
+
14
+ describe '.status of existing playlist' do
15
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
16
+ it { expect(playlist.status).to be_a Yt::Status }
17
+ end
18
+
19
+ describe '.snippet of unknown playlist' do
20
+ let(:id) { 'not-a-playlist-id' }
21
+ it { expect{playlist.snippet}.to raise_error Yt::Errors::NoItems }
22
+ end
23
+
24
+ describe '.status of unknown playlist' do
25
+ let(:id) { 'not-a-playlist-id' }
26
+ it { expect{playlist.status}.to raise_error Yt::Errors::NoItems }
27
+ end
28
+
29
+ describe '.delete on my own playlist' do
30
+ before(:all) { @my_playlist = $account.create_playlist title: "Yt Test Delete Playlist #{rand}" }
31
+ let(:id) { @my_playlist.id }
32
+
33
+ it { expect(playlist.delete).to be true }
34
+ end
35
+
36
+ describe '.delete on someone else’s playlist' do
37
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
38
+
39
+ it { expect{playlist.delete}.to fail.with 'forbidden' }
40
+ end
41
+
42
+ describe '.update on my own playlist' do
43
+ before(:all) { @my_playlist = $account.create_playlist title: "Yt Test Update Playlist #{rand}" }
44
+ after(:all) { @my_playlist.delete }
45
+ let(:id) { @my_playlist.id }
46
+
47
+ context 'changes the attributes that are specified to be updated' do
48
+ let(:attrs) { {title: "Yt Test Update Playlist #{rand} - new title"} }
49
+ it { expect(playlist.update attrs).to eq true }
50
+ it { expect{playlist.update attrs}.to change{playlist.title} }
51
+ end
52
+
53
+ context 'does not changes the attributes that are not specified to be updated' do
54
+ let(:attrs) { {} }
55
+ it { expect(playlist.update attrs).to eq true }
56
+ it { expect{playlist.update attrs}.not_to change{playlist.title} }
57
+ it { expect{playlist.update attrs}.not_to change{playlist.description} }
58
+ it { expect{playlist.update attrs}.not_to change{playlist.tags} }
59
+ it { expect{playlist.update attrs}.not_to change{playlist.privacy_status} }
60
+ end
61
+ end
62
+
63
+ describe '.update on someone else’s playlist' do
64
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
65
+
66
+ it { expect{playlist.update}.to fail.with 'forbidden' }
67
+ end
68
+
69
+ describe '.playlist_items of my own playlist' do
70
+ before(:all) { @my_playlist = $account.create_playlist title: "Yt Test Items" }
71
+ after(:all) { @my_playlist.delete }
72
+ let(:id) { @my_playlist.id }
73
+
74
+ it { expect(playlist.playlist_items).to be_a Yt::Collections::PlaylistItems }
75
+
76
+ context 'given an existing video' do
77
+ let(:video_id) { 'MESycYJytkU' }
78
+
79
+ describe 'can be added' do
80
+ it { expect(playlist.add_video video_id).to be_a Yt::PlaylistItem }
81
+ it { expect{playlist.add_video video_id}.to change{playlist.playlist_items.count}.by(1) }
82
+ it { expect(playlist.add_video! video_id).to be_a Yt::PlaylistItem }
83
+ it { expect{playlist.add_video! video_id}.to change{playlist.playlist_items.count}.by(1) }
84
+ end
85
+
86
+ describe 'can be removed' do
87
+ before { playlist.add_video video_id }
88
+
89
+ it { expect(playlist.delete_playlist_items.uniq).to eq [true] }
90
+ it { expect{playlist.delete_playlist_items}.to change{playlist.playlist_items.count} }
91
+ end
92
+ end
93
+
94
+ context 'given an unknown video' do
95
+ let(:video_id) { 'not-a-video' }
96
+
97
+ describe 'cannot be added' do
98
+ it { expect(playlist.add_video video_id).to be_nil }
99
+ it { expect{playlist.add_video video_id}.not_to change{playlist.playlist_items.count} }
100
+ it { expect{playlist.add_video! video_id}.to fail.with 'videoNotFound' }
101
+ end
102
+ end
103
+
104
+ context 'given a video of a terminated account' do
105
+ let(:video_id) { 'kDCpdKeTe5g' }
106
+
107
+ describe 'cannot be added' do
108
+ it { expect(playlist.add_video video_id).to be_nil }
109
+ it { expect{playlist.add_video video_id}.not_to change{playlist.playlist_items.count} }
110
+ it { expect{playlist.add_video! video_id}.to fail.with 'forbidden' }
111
+ end
112
+ end
113
+
114
+ context 'given one existing and one unknown video' do
115
+ let(:video_ids) { ['MESycYJytkU', 'not-a-video'] }
116
+
117
+ describe 'only one can be added' do
118
+ it { expect(playlist.add_videos(video_ids).length).to eq 2 }
119
+ it { expect{playlist.add_videos video_ids}.to change{playlist.playlist_items.count}.by(1) }
120
+ it { expect{playlist.add_videos! video_ids}.to fail.with 'videoNotFound' }
121
+ end
122
+ end
123
+ end
124
+
125
+ describe '.playlist_items of someone else’s playlist' do
126
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
127
+ let(:video_id) { 'MESycYJytkU' }
128
+
129
+ it { expect(playlist.playlist_items).to be_a Yt::Collections::PlaylistItems }
130
+
131
+ describe 'cannot be created or destroyed' do
132
+ it { expect{playlist.add_video! video_id}.to raise_error Yt::Errors::RequestError }
133
+ it { expect{playlist.delete_playlist_items}.to raise_error Yt::Errors::RequestError }
134
+ end
135
+ end
136
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'yt/associations/ids'
2
+ require 'yt/models/resource'
3
3
 
4
- describe Yt::Associations::Ids, :device_app do
4
+ describe Yt::Resource, :device_app do
5
5
  subject(:resource) { Yt::Resource.new url: url, auth: $account }
6
6
 
7
7
  describe '#id' do
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/video'
3
+
4
+ describe Yt::Video, :device_app do
5
+ subject(:video) { Yt::Video.new id: id, auth: $account }
6
+
7
+ context 'given an existing video' do
8
+ let(:id) { 'MESycYJytkU' }
9
+
10
+ it { expect(video.details_set).to be_a Yt::DetailsSet }
11
+ it { expect(video.snippet).to be_a Yt::Snippet }
12
+ it { expect(video.rating).to be_a Yt::Rating }
13
+ it { expect(video.status).to be_a Yt::Status }
14
+
15
+ context 'that I like' do
16
+ before { video.like }
17
+ it { expect(video).to be_liked }
18
+ it { expect(video.dislike).to be true }
19
+ end
20
+
21
+ context 'that I dislike' do
22
+ before { video.dislike }
23
+ it { expect(video).not_to be_liked }
24
+ it { expect(video.like).to be true }
25
+ end
26
+
27
+ context 'that I am indifferent to' do
28
+ before { video.unlike }
29
+ it { expect(video).not_to be_liked }
30
+ it { expect(video.like).to be true }
31
+ end
32
+ end
33
+
34
+ context 'given an unknown video' do
35
+ let(:id) { 'not-a-video-id' }
36
+
37
+ it { expect{video.details_set}.to raise_error Yt::Errors::NoItems }
38
+ it { expect{video.snippet}.to raise_error Yt::Errors::NoItems }
39
+ it { expect{video.rating}.to raise_error Yt::Errors::NoItems }
40
+ it { expect{video.status}.to raise_error Yt::Errors::NoItems }
41
+ end
42
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/video'
3
+
4
+ describe Yt::Video, :device_app do
5
+ subject(:video) { Yt::Video.new id: id, auth: $account }
6
+
7
+ context 'given an existing video with annotations' do
8
+ let(:id) { 'MESycYJytkU' }
9
+
10
+ it { expect(video.annotations).to be_a Yt::Collections::Annotations }
11
+ it { expect(video.annotations.first).to be_a Yt::Annotation }
12
+ end
13
+ end
@@ -0,0 +1,50 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+ require 'yt/models/channel'
5
+
6
+ describe Yt::Channel, :server_app do
7
+ let(:channel) { Yt::Channel.new id: id }
8
+
9
+ describe '.snippet of existing channel' do
10
+ let(:id) { 'UCxO1tY8h1AhOz0T4ENwmpow' }
11
+ it { expect(channel.snippet).to be_a Yt::Snippet }
12
+ end
13
+
14
+ describe '.snippet of unknown channel' do
15
+ let(:id) { 'not-a-channel-id' }
16
+ it { expect{channel.snippet}.to raise_error Yt::Errors::NoItems }
17
+ end
18
+
19
+ describe '.status of existing channel' do
20
+ let(:id) { 'UCxO1tY8h1AhOz0T4ENwmpow' }
21
+ it { expect(channel.status).to be_a Yt::Status }
22
+ end
23
+
24
+ describe '.status of unknown channel' do
25
+ let(:id) { 'not-a-channel-id' }
26
+ it { expect{channel.status}.to raise_error Yt::Errors::NoItems }
27
+ end
28
+
29
+ describe '.videos of existing channel' do
30
+ let(:id) { 'UCxO1tY8h1AhOz0T4ENwmpow' }
31
+ it { expect(channel.videos).to be_a Yt::Collections::Videos }
32
+ it { expect(channel.videos.first).to be_a Yt::Video }
33
+ end
34
+
35
+ describe '.videos of unknown channel starting with UC' do
36
+ let(:id) { 'UC-not-a-channel-id' }
37
+
38
+ # NOTE: This test is just a reflection of YouTube irrational behavior of
39
+ # returns 0 results if the name of an unknown channel starts with UC, but
40
+ # returning 100,000 results otherwise (ignoring the channel filter).
41
+ it { expect(channel.videos.count).to be 0 }
42
+ end
43
+
44
+ describe '.playlists of someone else’s channel' do
45
+ let(:id) { 'UCxO1tY8h1AhOz0T4ENwmpow' }
46
+
47
+ it { expect(channel.playlists).to be_a Yt::Collections::Playlists }
48
+ it { expect(channel.playlists.first).to be_a Yt::Playlist }
49
+ end
50
+ end
@@ -0,0 +1,36 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+ require 'yt/models/playlist'
5
+
6
+ describe Yt::Playlist, :server_app do
7
+ let(:playlist) { Yt::Playlist.new id: id }
8
+
9
+ describe '.snippet of existing playlist' do
10
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
11
+ it { expect(playlist.snippet).to be_a Yt::Snippet }
12
+ end
13
+
14
+ describe '.status of existing playlist' do
15
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
16
+ it { expect(playlist.status).to be_a Yt::Status }
17
+ end
18
+
19
+ describe '.snippet of unknown playlist' do
20
+ let(:id) { 'not-a-playlist-id' }
21
+ it { expect{playlist.snippet}.to raise_error Yt::Errors::NoItems }
22
+ end
23
+
24
+ describe '.status of unknown playlist' do
25
+ let(:id) { 'not-a-playlist-id' }
26
+ it { expect{playlist.status}.to raise_error Yt::Errors::NoItems }
27
+ end
28
+
29
+ describe '.playlist_items of someone else’s playlist' do
30
+ let(:id) { 'PLSWYkYzOrPMRCK6j0UgryI8E0NHhoVdRc' }
31
+ let(:video_id) { 'MESycYJytkU' }
32
+
33
+ it { expect(playlist.playlist_items).to be_a Yt::Collections::PlaylistItems }
34
+ it { expect(playlist.playlist_items.first).to be_a Yt::PlaylistItem }
35
+ end
36
+ end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'yt/associations/ids'
2
+ require 'yt/models/resource'
3
3
 
4
- describe Yt::Associations::Ids, :server_app do
4
+ describe Yt::Resource, :server_app do
5
5
  subject(:resource) { Yt::Resource.new url: url }
6
6
 
7
7
  describe '#id' do
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/video'
3
+
4
+ describe Yt::Video, :server_app do
5
+ subject(:video) { Yt::Video.new id: id }
6
+
7
+ context 'given an existing video' do
8
+ let(:id) { 'MESycYJytkU' }
9
+
10
+ it { expect(video.details_set).to be_a Yt::DetailsSet }
11
+ it { expect(video.snippet).to be_a Yt::Snippet }
12
+ it { expect(video.status).to be_a Yt::Status }
13
+ end
14
+
15
+ context 'given an unknown video' do
16
+ let(:id) { 'not-a-video-id' }
17
+
18
+ it { expect{video.details_set}.to raise_error Yt::Errors::NoItems }
19
+ it { expect{video.snippet}.to raise_error Yt::Errors::NoItems }
20
+ it { expect{video.status}.to raise_error Yt::Errors::NoItems }
21
+ end
22
+ end
@@ -10,4 +10,11 @@ describe Yt::Channel do
10
10
  it { expect(channel.snippet).to be_a Yt::Snippet }
11
11
  end
12
12
  end
13
+
14
+ describe '#status' do
15
+ context 'given fetching a channel returns a status' do
16
+ let(:attrs) { {status: {"privacyStatus"=>"public"}} }
17
+ it { expect(channel.status).to be_a Yt::Status }
18
+ end
19
+ end
13
20
  end
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.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Baccigalupo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-06 00:00:00.000000000 Z
11
+ date: 2014-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -122,22 +122,8 @@ files:
122
122
  - lib/yt/actions/insert.rb
123
123
  - lib/yt/actions/list.rb
124
124
  - lib/yt/actions/update.rb
125
- - lib/yt/associations.rb
126
- - lib/yt/associations/annotations.rb
127
125
  - lib/yt/associations/authentications.rb
128
- - lib/yt/associations/channels.rb
129
- - lib/yt/associations/details_sets.rb
130
126
  - lib/yt/associations/earnings.rb
131
- - lib/yt/associations/ids.rb
132
- - lib/yt/associations/partnered_channels.rb
133
- - lib/yt/associations/playlist_items.rb
134
- - lib/yt/associations/playlists.rb
135
- - lib/yt/associations/ratings.rb
136
- - lib/yt/associations/snippets.rb
137
- - lib/yt/associations/statuses.rb
138
- - lib/yt/associations/subscriptions.rb
139
- - lib/yt/associations/user_infos.rb
140
- - lib/yt/associations/videos.rb
141
127
  - lib/yt/associations/views.rb
142
128
  - lib/yt/collections/annotations.rb
143
129
  - lib/yt/collections/authentications.rb
@@ -151,6 +137,7 @@ files:
151
137
  - lib/yt/collections/playlists.rb
152
138
  - lib/yt/collections/ratings.rb
153
139
  - lib/yt/collections/snippets.rb
140
+ - lib/yt/collections/statuses.rb
154
141
  - lib/yt/collections/subscriptions.rb
155
142
  - lib/yt/collections/user_infos.rb
156
143
  - lib/yt/collections/videos.rb
@@ -183,31 +170,20 @@ files:
183
170
  - lib/yt/models/user_info.rb
184
171
  - lib/yt/models/video.rb
185
172
  - lib/yt/version.rb
173
+ - spec/associations/device_auth/account_spec.rb
186
174
  - spec/associations/device_auth/authentications_spec.rb
187
- - spec/associations/device_auth/channels_spec.rb
188
- - spec/associations/device_auth/details_sets_spec.rb
175
+ - spec/associations/device_auth/channel_spec.rb
176
+ - spec/associations/device_auth/content_owner_spec.rb
189
177
  - spec/associations/device_auth/earnings_spec.rb
190
- - spec/associations/device_auth/ids_spec.rb
191
- - spec/associations/device_auth/partnered_channels_spec.rb
192
- - spec/associations/device_auth/playlist_items_spec.rb
193
- - spec/associations/device_auth/playlists_spec.rb
194
- - spec/associations/device_auth/ratings_spec.rb
195
- - spec/associations/device_auth/snippets_spec.rb
196
- - spec/associations/device_auth/subscriptions_spec.rb
197
- - spec/associations/device_auth/user_infos_spec.rb
198
- - spec/associations/device_auth/videos_spec.rb
178
+ - spec/associations/device_auth/playlist_spec.rb
179
+ - spec/associations/device_auth/resource_spec.rb
180
+ - spec/associations/device_auth/video_spec.rb
199
181
  - spec/associations/device_auth/views_spec.rb
200
- - spec/associations/no_auth/annotations_spec.rb
201
- - spec/associations/server_auth/channels_spec.rb
202
- - spec/associations/server_auth/details_sets_spec.rb
203
- - spec/associations/server_auth/ids_spec.rb
204
- - spec/associations/server_auth/playlist_items_spec.rb
205
- - spec/associations/server_auth/playlists_spec.rb
206
- - spec/associations/server_auth/ratings_spec.rb
207
- - spec/associations/server_auth/snippets_spec.rb
208
- - spec/associations/server_auth/subscriptions_spec.rb
209
- - spec/associations/server_auth/user_infos_spec.rb
210
- - spec/associations/server_auth/videos_spec.rb
182
+ - spec/associations/no_auth/video_spec.rb
183
+ - spec/associations/server_auth/channel_spec.rb
184
+ - spec/associations/server_auth/playlist_spec.rb
185
+ - spec/associations/server_auth/resource_spec.rb
186
+ - spec/associations/server_auth/video_spec.rb
211
187
  - spec/collections/annotations_spec.rb
212
188
  - spec/collections/channels_spec.rb
213
189
  - spec/collections/details_sets_spec.rb
@@ -269,31 +245,20 @@ specification_version: 4
269
245
  summary: Yt makes it easy to interact with Youtube V3 API by providing a modular,
270
246
  intuitive and tested Ruby-style API.
271
247
  test_files:
248
+ - spec/associations/device_auth/account_spec.rb
272
249
  - spec/associations/device_auth/authentications_spec.rb
273
- - spec/associations/device_auth/channels_spec.rb
274
- - spec/associations/device_auth/details_sets_spec.rb
250
+ - spec/associations/device_auth/channel_spec.rb
251
+ - spec/associations/device_auth/content_owner_spec.rb
275
252
  - spec/associations/device_auth/earnings_spec.rb
276
- - spec/associations/device_auth/ids_spec.rb
277
- - spec/associations/device_auth/partnered_channels_spec.rb
278
- - spec/associations/device_auth/playlist_items_spec.rb
279
- - spec/associations/device_auth/playlists_spec.rb
280
- - spec/associations/device_auth/ratings_spec.rb
281
- - spec/associations/device_auth/snippets_spec.rb
282
- - spec/associations/device_auth/subscriptions_spec.rb
283
- - spec/associations/device_auth/user_infos_spec.rb
284
- - spec/associations/device_auth/videos_spec.rb
253
+ - spec/associations/device_auth/playlist_spec.rb
254
+ - spec/associations/device_auth/resource_spec.rb
255
+ - spec/associations/device_auth/video_spec.rb
285
256
  - spec/associations/device_auth/views_spec.rb
286
- - spec/associations/no_auth/annotations_spec.rb
287
- - spec/associations/server_auth/channels_spec.rb
288
- - spec/associations/server_auth/details_sets_spec.rb
289
- - spec/associations/server_auth/ids_spec.rb
290
- - spec/associations/server_auth/playlist_items_spec.rb
291
- - spec/associations/server_auth/playlists_spec.rb
292
- - spec/associations/server_auth/ratings_spec.rb
293
- - spec/associations/server_auth/snippets_spec.rb
294
- - spec/associations/server_auth/subscriptions_spec.rb
295
- - spec/associations/server_auth/user_infos_spec.rb
296
- - spec/associations/server_auth/videos_spec.rb
257
+ - spec/associations/no_auth/video_spec.rb
258
+ - spec/associations/server_auth/channel_spec.rb
259
+ - spec/associations/server_auth/playlist_spec.rb
260
+ - spec/associations/server_auth/resource_spec.rb
261
+ - spec/associations/server_auth/video_spec.rb
297
262
  - spec/collections/annotations_spec.rb
298
263
  - spec/collections/channels_spec.rb
299
264
  - spec/collections/details_sets_spec.rb