notu 0.1.6 → 0.2.0

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 (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