sandro-metamuse 0.1.3 → 0.1.4
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.
- data/History +6 -2
- data/VERSION +1 -1
- data/lib/metamuse/album.rb +7 -0
- data/lib/metamuse/services/lastfm/artist.rb +7 -3
- data/metamuse.gemspec +1 -4
- data/spec/metamuse/album_spec.rb +36 -5
- data/spec/metamuse/services/lastfm/artist_spec.rb +11 -0
- metadata +1 -1
data/History
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.4 08/19/2009
|
|
2
|
+
* Return an invalid artist when an artist search fails. Closes gh-6
|
|
3
|
+
* artist.albums.uniq returns unique albums by name. Closes gh-7
|
|
4
|
+
|
|
5
|
+
0.1.3 08/19/2009
|
|
2
6
|
* Artist controls validity and whether or not to use #best_guess
|
|
3
7
|
|
|
4
|
-
0.1.2
|
|
8
|
+
0.1.2 08/18/2009
|
|
5
9
|
* Modified Cracks date parser, queries for Radiohead now work
|
|
6
10
|
* Ruby 1.9 compatibility
|
|
7
11
|
* Moved Metamuse queries from echonest to Lastfm
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.4
|
data/lib/metamuse/album.rb
CHANGED
|
@@ -4,8 +4,12 @@ class Metamuse::Services::Lastfm::Artist
|
|
|
4
4
|
include ::Metamuse::InstanceInitialize
|
|
5
5
|
|
|
6
6
|
def self.build(response)
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
if response['lfm']['status'] == 'ok'
|
|
8
|
+
data = response['lfm']['artist']
|
|
9
|
+
new data
|
|
10
|
+
else
|
|
11
|
+
new :invalid => true
|
|
12
|
+
end
|
|
9
13
|
end
|
|
10
14
|
|
|
11
15
|
def initialize(attrs={})
|
|
@@ -44,6 +48,6 @@ class Metamuse::Services::Lastfm::Artist
|
|
|
44
48
|
end
|
|
45
49
|
|
|
46
50
|
def valid?
|
|
47
|
-
url !~ %r(/music/\+noredirect/)
|
|
51
|
+
url && url !~ %r(/music/\+noredirect/)
|
|
48
52
|
end
|
|
49
53
|
end
|
data/metamuse.gemspec
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
# Generated by jeweler
|
|
2
|
-
# DO NOT EDIT THIS FILE
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
|
4
1
|
# -*- encoding: utf-8 -*-
|
|
5
2
|
|
|
6
3
|
Gem::Specification.new do |s|
|
|
7
4
|
s.name = %q{metamuse}
|
|
8
|
-
s.version = "0.1.
|
|
5
|
+
s.version = "0.1.4"
|
|
9
6
|
|
|
10
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
8
|
s.authors = ["Sandro Turriate"]
|
data/spec/metamuse/album_spec.rb
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
2
|
|
|
3
3
|
describe Metamuse::Album do
|
|
4
|
+
subject { Metamuse::Album }
|
|
5
|
+
|
|
4
6
|
describe "#<=>" do
|
|
5
7
|
context "comparing nil ranks" do
|
|
6
8
|
before do
|
|
7
|
-
@nil1
|
|
8
|
-
@nil2
|
|
9
|
-
@album1 =
|
|
10
|
-
@album3 =
|
|
11
|
-
@album5 =
|
|
9
|
+
@nil1 = subject.new :rank => nil
|
|
10
|
+
@nil2 = subject.new :rank => nil
|
|
11
|
+
@album1 = subject.new :rank => 1
|
|
12
|
+
@album3 = subject.new :rank => 3
|
|
13
|
+
@album5 = subject.new :rank => 5
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
it "moves the nil from the beginning to the end" do
|
|
@@ -32,4 +34,33 @@ describe Metamuse::Album do
|
|
|
32
34
|
end
|
|
33
35
|
end
|
|
34
36
|
end
|
|
37
|
+
|
|
38
|
+
describe "#hash" do
|
|
39
|
+
it "hashes based on the artist and album name" do
|
|
40
|
+
artist = Metamuse::Artist.new :name => 'Radiohead'
|
|
41
|
+
album = subject.new :name => 'In Rainbows', :artist => artist
|
|
42
|
+
album.hash.should == [artist, 'In Rainbows'].hash
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
describe "#eql?" do
|
|
47
|
+
it "evaluates equality by name" do
|
|
48
|
+
album1 = subject.new :name => 'In Rainbows'
|
|
49
|
+
album2 = subject.new :name => 'In Rainbows'
|
|
50
|
+
album1.should eql(album2)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "a unique set of albums" do
|
|
55
|
+
before do
|
|
56
|
+
@album1 = subject.new :name => 'In Rainbows'
|
|
57
|
+
@album2 = subject.new :name => 'Hail to the Thief'
|
|
58
|
+
@album3 = subject.new :name => 'In Rainbows'
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "removes the duplicate album name from the set" do
|
|
62
|
+
albums = [@album1, @album2, @album3]
|
|
63
|
+
albums.uniq.should == [@album1, @album2]
|
|
64
|
+
end
|
|
65
|
+
end
|
|
35
66
|
end
|
|
@@ -3,6 +3,17 @@ require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
|
|
|
3
3
|
describe Metamuse::Services::Lastfm::Artist do
|
|
4
4
|
subject { Metamuse::Services::Lastfm::Artist }
|
|
5
5
|
|
|
6
|
+
describe ".build" do
|
|
7
|
+
context "unsuccessful response from lastfm" do
|
|
8
|
+
it "returns an invalid artist with no similar artists" do
|
|
9
|
+
response = {'lfm' => {'status' => 'failed'}}
|
|
10
|
+
artist = subject.build(response)
|
|
11
|
+
artist.should_not be_valid
|
|
12
|
+
artist.similar_artists.should be_empty
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
6
17
|
describe "#valid?" do
|
|
7
18
|
it "is an invalid artist when the url contains '+noredirect'" do
|
|
8
19
|
artist = subject.new :url => 'http://last.fm/music/+noredirect/Cold Play'
|