yt 0.32.2 → 0.32.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+ require 'yt/models/url'
3
+
4
+ describe Yt::URL, :server_app do
5
+ subject(:url) { Yt::URL.new text }
6
+
7
+ context 'given an existing YouTube channel URL' do
8
+ let(:text) { "youtube.com/channel/UCxO1tY8h1AhOz0T4ENwmpow" }
9
+
10
+ it {expect(url.resource).to be_a Yt::Channel }
11
+ it {expect(url.resource.title).to be }
12
+ end
13
+
14
+ context 'given an existing YouTube video URL' do
15
+ let(:text) { "youtube.com/watch?v=gknzFj_0vvY" }
16
+
17
+ it {expect(url.resource).to be_a Yt::Video }
18
+ it {expect(url.resource.title).to be }
19
+ end
20
+
21
+ context 'given an unknown YouTube video URL' do
22
+ let(:text) { "youtu.be/invalid-id-" }
23
+
24
+ it {expect(url.resource).to be_a Yt::Video }
25
+ it {expect{url.resource.title}.to raise_error Yt::Errors::NoItems }
26
+ end
27
+
28
+ context 'given an existing YouTube playlist URL' do
29
+ let(:text) { "youtube.com/playlist?list=PL-LeTutc9GRKD3yBDhnRF_yE8UTaQI5Jf" }
30
+
31
+ it {expect(url.resource).to be_a Yt::Playlist }
32
+ it {expect(url.resource.title).to be }
33
+ end
34
+
35
+ context 'given an unknown YouTube playlist URL' do
36
+ let(:text) { "https://www.youtube.com/playlist?list=invalid-id-" }
37
+
38
+ it {expect(url.resource).to be_a Yt::Playlist }
39
+ it {expect{url.resource.title}.to raise_error Yt::Errors::NoItems }
40
+ end
41
+
42
+ context 'given an unknown text' do
43
+ let(:text) { 'not-really-anything---' }
44
+
45
+ it {expect{url.resource}.to raise_error Yt::Errors::NoItems }
46
+ end
47
+
48
+ context 'given a YouTube channel URL in the name form' do
49
+ let(:text) { "http://www.youtube.com/#{name}" }
50
+
51
+ describe 'works when the name matches the custom URL' do
52
+ let(:name) { 'nbcsports' }
53
+ it {expect(url.id).to eq 'UCqZQlzSHbVJrwrn5XvzrzcA' }
54
+ end
55
+
56
+ describe 'works when the name matches the username' do
57
+ let(:name) { '2012NBCOlympics' }
58
+ it {expect(url.id).to eq 'UCqZQlzSHbVJrwrn5XvzrzcA' }
59
+ end
60
+
61
+ describe 'fails with unknown channels' do
62
+ let(:name) { 'not-an-actual-channel' }
63
+ it {expect{url.id}.to raise_error Yt::Errors::NoItems }
64
+ end
65
+ end
66
+
67
+ context 'given a YouTube channel URL in the custom form' do
68
+ let(:text) { "https://youtube.com/c/#{name}" }
69
+
70
+ describe 'works with existing channels' do
71
+ let(:name) { 'ogeeku' }
72
+ it {expect(url.id).to eq 'UC4nG_NxJniKoB-n6TLT2yaw' }
73
+ end
74
+
75
+ describe 'fails with unknown channels' do
76
+ let(:name) { 'not-an-actual-channel' }
77
+ it {expect{url.id}.to raise_error Yt::Errors::NoItems }
78
+ end
79
+ end
80
+
81
+ context 'given a YouTube channel URL in the username form' do
82
+ let(:text) { "youtube.com/user/#{name}" }
83
+
84
+ describe 'works with existing channels' do
85
+ let(:name) { 'ogeeku' }
86
+ it {expect(url.id).to eq 'UC4lU5YG9QDgs0X2jdnt7cdQ' }
87
+ end
88
+
89
+ describe 'fails with unknown channels' do
90
+ let(:name) { 'not-an-actual-channel' }
91
+ it {expect{url.id}.to raise_error Yt::Errors::NoItems }
92
+ end
93
+ end
94
+ 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.32.2
4
+ version: 0.32.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Baccigalupo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-25 00:00:00.000000000 Z
11
+ date: 2019-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -236,6 +236,7 @@ files:
236
236
  - lib/yt/models/status.rb
237
237
  - lib/yt/models/subscription.rb
238
238
  - lib/yt/models/timestamp.rb
239
+ - lib/yt/models/url.rb
239
240
  - lib/yt/models/user_info.rb
240
241
  - lib/yt/models/video.rb
241
242
  - lib/yt/models/video_category.rb
@@ -286,6 +287,7 @@ files:
286
287
  - spec/models/statistics_set_spec.rb
287
288
  - spec/models/status_spec.rb
288
289
  - spec/models/subscription_spec.rb
290
+ - spec/models/url_spec.rb
289
291
  - spec/models/video_category_spec.rb
290
292
  - spec/models/video_spec.rb
291
293
  - spec/requests/as_account/account_spec.rb
@@ -315,6 +317,7 @@ files:
315
317
  - spec/requests/as_server_app/comment_threads_spec.rb
316
318
  - spec/requests/as_server_app/playlist_item_spec.rb
317
319
  - spec/requests/as_server_app/playlist_spec.rb
320
+ - spec/requests/as_server_app/url_spec.rb
318
321
  - spec/requests/as_server_app/video_spec.rb
319
322
  - spec/requests/as_server_app/videos_spec.rb
320
323
  - spec/requests/unauthenticated/video_spec.rb
@@ -342,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
342
345
  version: '0'
343
346
  requirements: []
344
347
  rubyforge_project:
345
- rubygems_version: 2.7.6
348
+ rubygems_version: 2.7.6.2
346
349
  signing_key:
347
350
  specification_version: 4
348
351
  summary: Yt makes it easy to interact with Youtube V3 API by providing a modular,
@@ -392,6 +395,7 @@ test_files:
392
395
  - spec/models/statistics_set_spec.rb
393
396
  - spec/models/status_spec.rb
394
397
  - spec/models/subscription_spec.rb
398
+ - spec/models/url_spec.rb
395
399
  - spec/models/video_category_spec.rb
396
400
  - spec/models/video_spec.rb
397
401
  - spec/requests/as_account/account_spec.rb
@@ -421,6 +425,7 @@ test_files:
421
425
  - spec/requests/as_server_app/comment_threads_spec.rb
422
426
  - spec/requests/as_server_app/playlist_item_spec.rb
423
427
  - spec/requests/as_server_app/playlist_spec.rb
428
+ - spec/requests/as_server_app/url_spec.rb
424
429
  - spec/requests/as_server_app/video_spec.rb
425
430
  - spec/requests/as_server_app/videos_spec.rb
426
431
  - spec/requests/unauthenticated/video_spec.rb