notu 0.1.6 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -4
  3. data/README.mdown +12 -8
  4. data/VERSION +1 -1
  5. data/lib/notu.rb +1 -0
  6. data/lib/notu/listing.rb +30 -0
  7. data/lib/notu/loved_tracks.rb +7 -20
  8. data/lib/notu/most_played_tracks.rb +24 -15
  9. data/spec/cassettes/Notu_HtmlDocument/_get/follows_redirects.yml +23 -32
  10. data/spec/cassettes/Notu_HtmlDocument/_get/raise_a_NetworkError_on_404.yml +9 -16
  11. data/spec/cassettes/Notu_HtmlDocument/_get/raise_a_ParseError_if_not_a_valid_document.yml +22 -20
  12. data/spec/cassettes/Notu_HtmlDocument/_get/returns_document_parsed.yml +21 -30
  13. data/spec/cassettes/Notu_HttpDownload/_get/accepts_HTTPS_URL.yml +21 -30
  14. data/spec/cassettes/Notu_HttpDownload/_get/follow_redirects.yml +23 -32
  15. data/spec/cassettes/Notu_HttpDownload/_get/raise_a_NetworkError_if_too_many_redirects.yml +3 -3
  16. data/spec/cassettes/Notu_HttpDownload/_get/raise_a_NetworkError_on_404.yml +9 -16
  17. data/spec/cassettes/Notu_HttpDownload/_get/retrives_document_from_given_URL.yml +21 -30
  18. data/spec/cassettes/Notu_LovedTracks/_each/returns_nil.yml +3906 -2531
  19. data/spec/cassettes/Notu_LovedTracks/_each/returns_some_tracks.yml +7805 -5039
  20. data/spec/cassettes/Notu_LovedTracks/_page_urls/is_correct.yml +7800 -5013
  21. data/spec/cassettes/Notu_LovedTracks/_pages_count/is_correct.yml +3900 -2507
  22. data/spec/cassettes/Notu_MostPlayedTracks/_each/returns_nil.yml +2597 -6489
  23. data/spec/cassettes/Notu_MostPlayedTracks/_each/returns_some_tracks.yml +9435 -13402
  24. data/spec/cassettes/Notu_MostPlayedTracks/_page_urls/is_correct.yml +9613 -0
  25. data/spec/cassettes/Notu_MostPlayedTracks/_pages_count/is_correct.yml +5085 -0
  26. data/spec/notu/library_spec.rb +2 -2
  27. data/spec/notu/loved_tracks_spec.rb +20 -4
  28. data/spec/notu/most_played_tracks_spec.rb +44 -7
  29. metadata +7 -2
@@ -37,11 +37,11 @@ describe Notu::Library do
37
37
  it 'returns a LovedTracks object' do
38
38
  most_played_tracks = library.most_played_tracks
39
39
  expect(most_played_tracks).to be_a(Notu::MostPlayedTracks)
40
- expect(most_played_tracks.period).to eq('last_week')
40
+ expect(most_played_tracks.period).to eq('7 days')
41
41
  end
42
42
 
43
43
  it 'accepts options' do
44
- expect(library.most_played_tracks(period: 'last_month').period).to eq('last_month')
44
+ expect(library.most_played_tracks(period: '30 days').period).to eq('30 days')
45
45
  end
46
46
 
47
47
  end
@@ -42,10 +42,10 @@ describe Notu::LovedTracks, :vcr do
42
42
  describe '#page_urls' do
43
43
 
44
44
  it 'is correct' do
45
- urls = loved_tracks.send(:page_urls)
46
- expect(urls.size).to eq(loved_tracks.send(:pages_count))
47
- expect(urls).to include('http://www.last.fm/user/alexistoulotte/library/loved?sortBy=date&sortOrder=desc&page=12')
48
- expect(urls).to include('http://www.last.fm/user/alexistoulotte/library/loved?sortBy=date&sortOrder=desc&page=3')
45
+ urls = loved_tracks.page_urls
46
+ expect(urls.size).to eq(loved_tracks.pages_count)
47
+ expect(urls).to include('http://www.last.fm/user/alexistoulotte/loved?page=12')
48
+ expect(urls).to include('http://www.last.fm/user/alexistoulotte/loved?page=3')
49
49
  end
50
50
 
51
51
  end
@@ -58,4 +58,20 @@ describe Notu::LovedTracks, :vcr do
58
58
 
59
59
  end
60
60
 
61
+ describe '#params' do
62
+
63
+ it 'is an empty hash' do
64
+ expect(loved_tracks.params).to eq({})
65
+ end
66
+
67
+ end
68
+
69
+ describe '#path' do
70
+
71
+ it 'is "loved"' do
72
+ expect(loved_tracks.path).to eq('loved')
73
+ end
74
+
75
+ end
76
+
61
77
  end
@@ -22,7 +22,7 @@ describe Notu::MostPlayedTracks, :vcr do
22
22
  describe '#each' do
23
23
 
24
24
  it 'returns some tracks' do
25
- allow(most_played_tracks).to receive(:period).and_return('last_month')
25
+ allow(most_played_tracks).to receive(:period).and_return('90 days')
26
26
  tracks = most_played_tracks.take(28)
27
27
  expect(tracks.size).to eq(28)
28
28
  tracks.each do |track|
@@ -39,24 +39,61 @@ describe Notu::MostPlayedTracks, :vcr do
39
39
 
40
40
  end
41
41
 
42
+ describe '#page_urls' do
43
+
44
+ it 'is correct' do
45
+ allow(most_played_tracks).to receive(:period).and_return('365 days')
46
+ urls = most_played_tracks.page_urls
47
+ expect(urls.size).to eq(most_played_tracks.pages_count)
48
+ expect(urls).to include('http://www.last.fm/user/alexistoulotte/library/tracks?date_preset=LAST_365_DAYS&page=5')
49
+ expect(urls).to include('http://www.last.fm/user/alexistoulotte/library/tracks?date_preset=LAST_365_DAYS&page=2')
50
+ end
51
+
52
+ end
53
+
54
+ describe '#pages_count' do
55
+
56
+ it 'is correct' do
57
+ allow(most_played_tracks).to receive(:period).and_return('Overall')
58
+ expect(most_played_tracks.pages_count).to be_within(150).of(250)
59
+ end
60
+
61
+ end
62
+
63
+ describe '#params' do
64
+
65
+ it 'includes period' do
66
+ expect(most_played_tracks.params).to eq({ 'date_preset' => 'LAST_7_DAYS' })
67
+ end
68
+
69
+ end
70
+
71
+ describe '#path' do
72
+
73
+ it 'is "library/tracks"' do
74
+ expect(most_played_tracks.path).to eq('library/tracks')
75
+ end
76
+
77
+ end
78
+
42
79
  describe '#period' do
43
80
 
44
- it 'is "last_week" by default' do
45
- expect(most_played_tracks.period).to eq('last_week')
81
+ it 'is "7 days" by default' do
82
+ expect(most_played_tracks.period).to eq('7 days')
46
83
  end
47
84
 
48
85
  it 'can be specified via option' do
49
- expect(Notu::MostPlayedTracks.new(library, period: 'last_6_months').period).to eq('last_6_months')
86
+ expect(Notu::MostPlayedTracks.new(library, period: '90 days').period).to eq('90 days')
50
87
  end
51
88
 
52
89
  it 'can be specified via option (as string)' do
53
- expect(Notu::MostPlayedTracks.new(library, 'period' => 'last_6_months').period).to eq('last_6_months')
90
+ expect(Notu::MostPlayedTracks.new(library, 'period' => '90 days').period).to eq('90 days')
54
91
  end
55
92
 
56
93
  it 'raise an error if invalid' do
57
94
  expect {
58
- Notu::MostPlayedTracks.new(library, period: 'foo')
59
- }.to raise_error(ArgumentError, 'Notu::MostPlayedTracks#period is invalid: "foo"')
95
+ Notu::MostPlayedTracks.new(library, period: '180 days')
96
+ }.to raise_error(ArgumentError, 'Notu::MostPlayedTracks#period is invalid: "180 days"')
60
97
  end
61
98
 
62
99
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Toulotte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-28 00:00:00.000000000 Z
11
+ date: 2015-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -168,6 +168,7 @@ files:
168
168
  - lib/notu/html_document.rb
169
169
  - lib/notu/http_download.rb
170
170
  - lib/notu/library.rb
171
+ - lib/notu/listing.rb
171
172
  - lib/notu/loved_tracks.rb
172
173
  - lib/notu/most_played_tracks.rb
173
174
  - lib/notu/network_error.rb
@@ -189,6 +190,8 @@ files:
189
190
  - spec/cassettes/Notu_LovedTracks/_pages_count/is_correct.yml
190
191
  - spec/cassettes/Notu_MostPlayedTracks/_each/returns_nil.yml
191
192
  - spec/cassettes/Notu_MostPlayedTracks/_each/returns_some_tracks.yml
193
+ - spec/cassettes/Notu_MostPlayedTracks/_page_urls/is_correct.yml
194
+ - spec/cassettes/Notu_MostPlayedTracks/_pages_count/is_correct.yml
192
195
  - spec/notu/error_spec.rb
193
196
  - spec/notu/html_document_spec.rb
194
197
  - spec/notu/http_download_spec.rb
@@ -240,6 +243,8 @@ test_files:
240
243
  - spec/cassettes/Notu_LovedTracks/_pages_count/is_correct.yml
241
244
  - spec/cassettes/Notu_MostPlayedTracks/_each/returns_nil.yml
242
245
  - spec/cassettes/Notu_MostPlayedTracks/_each/returns_some_tracks.yml
246
+ - spec/cassettes/Notu_MostPlayedTracks/_page_urls/is_correct.yml
247
+ - spec/cassettes/Notu_MostPlayedTracks/_pages_count/is_correct.yml
243
248
  - spec/notu/error_spec.rb
244
249
  - spec/notu/html_document_spec.rb
245
250
  - spec/notu/http_download_spec.rb