Fixing tests

This commit is contained in:
Gregory Eremin 2012-09-06 11:09:58 +04:00
parent b9e90da8a3
commit 4976785e1c
3 changed files with 13 additions and 14 deletions

View File

@ -39,14 +39,13 @@ module MusicBrainz
end end
def search(name) def search(name)
artists = load({ load({
:parser => :artist_search :parser => :artist_search
}, { }, {
:resource => :artist, :resource => :artist,
:query => CGI.escape(name).gsub(/\!/, '\!') + '~', :query => "artist:" << CGI.escape(name).gsub(/\!/, '\!'),
:limit => 50 :limit => 10
}) })
artists.sort{ |a, b| b[:weight] <=> a[:weight] }.take(10)
end end
def discography(mbid) def discography(mbid)

View File

@ -21,19 +21,17 @@ module MusicBrainz
end end
def search(xml) def search(xml)
artists = [] xml.css("artist-list > artist").map do |a|
xml.css("artist-list > artist").each do |a| {
artists << {
:name => a.first_element_child.text.gsub(/[`]/, "'"), :name => a.first_element_child.text.gsub(/[`]/, "'"),
:sort_name => safe_get_value(a, "sort-name").gsub(/[`]/, "'"), :sort_name => safe_get_value(a, "sort-name").gsub(/[`]/, "'"),
:score => (safe_get_attr(a, nil, "score") .to_i rescue 0), :score => (safe_get_attr(a, nil, "score").to_i rescue 0),
:desc => safe_get_value(a, "disambiguation"), :desc => safe_get_value(a, "disambiguation"),
:type => safe_get_attr(a, nil, "type"), :type => safe_get_attr(a, nil, "type"),
:mbid => safe_get_attr(a, nil, "id"), :mbid => safe_get_attr(a, nil, "id"),
:aliases => a.css("alias-list > alias").map { |item| item.text } :aliases => a.css("alias-list > alias").map { |item| item.text }
} }
end end
artists
end end
def release_groups(xml) def release_groups(xml)

View File

@ -22,17 +22,19 @@ describe MusicBrainz::Artist do
it "should return search results in the right order and pass back the correct score" do it "should return search results in the right order and pass back the correct score" do
matches = MusicBrainz::Artist.search('Chris Martin') matches = MusicBrainz::Artist.search('Chris Martin')
matches.first[:score].should == 100 matches[0][:score].should == 100
matches.first[:mbid].should == "98d1ec5a-dd97-4c0b-9c83-7928aac89bca" matches[0][:mbid].should == "98d1ec5a-dd97-4c0b-9c83-7928aac89bca"
matches[1][:score].should == 100 matches[1][:score].should == 100
matches[1][:mbid].should == "af2ab893-3212-4226-9e73-73a1660b6952" matches[1][:mbid].should == "af2ab893-3212-4226-9e73-73a1660b6952"
matches[2][:score].should == 95 matches[2][:score].should == 95
matches[2][:mbid].should == "444d1b63-534b-4ea6-89f0-0af6ab2e20c3" matches[2][:mbid].should == "444d1b63-534b-4ea6-89f0-0af6ab2e20c3"
matches[3][:score].should == 95 matches[3][:score].should == 95
matches[3][:mbid].should == "90fff570-a4ef-4cd4-ba21-e00c7261b05a" matches[3][:mbid].should == "b732a912-af95-472c-be52-b14610734c64"
matches[4][:score].should == 95
matches[4][:mbid].should == "90fff570-a4ef-4cd4-ba21-e00c7261b05a"
end end
it "finds name first than alias" do it "finds name first than alias" do
matches = MusicBrainz::Artist.search('Chris Martin') matches = MusicBrainz::Artist.search('Chris Martin')
matches.length.should be > 0 matches.length.should be > 0