2012-07-08 22:37:46 +00:00
# -*- encoding: utf-8 -*-
2012-07-04 13:10:47 +00:00
require " spec_helper "
describe MusicBrainz :: ReleaseGroup do
2013-01-22 15:04:15 +00:00
describe '.find' do
it " gets no exception while loading release group info " do
lambda {
MusicBrainz :: ReleaseGroup . find ( " 6f33e0f0-cde2-38f9-9aee-2c60af8d1a61 " )
} . should_not raise_error ( Exception )
end
it " gets correct instance " do
release_group = MusicBrainz :: ReleaseGroup . find ( " 6f33e0f0-cde2-38f9-9aee-2c60af8d1a61 " )
release_group . should be_an_instance_of ( MusicBrainz :: ReleaseGroup )
end
it " gets correct release group data " do
release_group = MusicBrainz :: ReleaseGroup . find ( " 6f33e0f0-cde2-38f9-9aee-2c60af8d1a61 " )
release_group . id . should == " 6f33e0f0-cde2-38f9-9aee-2c60af8d1a61 "
release_group . type . should == " Album "
release_group . title . should == " Empire "
release_group . first_release_date . should == Date . new ( 2006 , 8 , 28 )
2013-02-06 13:07:20 +00:00
release_group . urls [ :wikipedia ] . should == 'http://en.wikipedia.org/wiki/Empire_(Kasabian_album)'
2013-01-22 15:04:15 +00:00
end
2012-07-04 13:10:47 +00:00
end
2013-01-22 15:04:15 +00:00
describe '.search' do
context 'without type filter' do
it " searches release group by artist name and title " do
2013-05-06 17:57:32 +00:00
response = File . open ( File . join ( File . dirname ( __FILE__ ) , " ../fixtures/release_group/search.xml " ) ) . read
MusicBrainz :: Client . any_instance . stub ( :get_contents ) . with ( 'http://musicbrainz.org/ws/2/release-group?query=artist:"Kasabian" AND releasegroup:"Empire"&limit=10' ) .
and_return ( { status : 200 , body : response } )
2013-01-22 15:04:15 +00:00
matches = MusicBrainz :: ReleaseGroup . search ( 'Kasabian' , 'Empire' )
matches . length . should be > 0
matches . first [ :title ] . should == 'Empire'
2013-05-06 17:57:32 +00:00
matches . first [ :type ] . should == 'Album'
2013-01-22 15:04:15 +00:00
end
end
context 'with type filter' do
it " searches release group by artist name and title " do
2013-05-05 23:14:44 +00:00
matches = MusicBrainz :: ReleaseGroup . search ( 'Kasabian' , 'Empire' , 'Album' )
2013-01-22 15:04:15 +00:00
matches . length . should be > 0
matches . first [ :title ] . should == 'Empire'
matches . first [ :type ] . should == 'Album'
end
end
2012-07-04 13:10:47 +00:00
end
2013-01-22 15:04:15 +00:00
describe '.find_by_artist_and_title' do
it " gets first release group by artist name and title " do
2013-05-06 17:57:32 +00:00
response = File . open ( File . join ( File . dirname ( __FILE__ ) , " ../fixtures/release_group/search.xml " ) ) . read
MusicBrainz :: Client . any_instance . stub ( :get_contents ) . with ( 'http://musicbrainz.org/ws/2/release-group?query=artist:"Kasabian" AND releasegroup:"Empire"&limit=10' ) .
and_return ( { status : 200 , body : response } )
response = File . open ( File . join ( File . dirname ( __FILE__ ) , " ../fixtures/release_group/entity.xml " ) ) . read
MusicBrainz :: Client . any_instance . stub ( :get_contents ) . with ( 'http://musicbrainz.org/ws/2/release-group/6f33e0f0-cde2-38f9-9aee-2c60af8d1a61?inc=url-rels' ) .
and_return ( { status : 200 , body : response } )
2013-01-22 15:04:15 +00:00
release_group = MusicBrainz :: ReleaseGroup . find_by_artist_and_title ( 'Kasabian' , 'Empire' )
2013-05-06 17:57:32 +00:00
release_group . id . should == '6f33e0f0-cde2-38f9-9aee-2c60af8d1a61'
2013-01-22 15:04:15 +00:00
end
2012-07-04 13:10:47 +00:00
end
2013-01-22 15:04:15 +00:00
describe '#releases' do
it " gets correct release group's releases " do
2014-02-05 13:53:36 +00:00
MusicBrainz :: Client . any_instance . stub ( :get_contents ) . with ( 'http://musicbrainz.org/ws/2/release-group/6f33e0f0-cde2-38f9-9aee-2c60af8d1a61?inc=url-rels' ) .
and_return ( { status : 200 , body : File . open ( File . join ( File . dirname ( __FILE__ ) , " ../fixtures/release_group/entity.xml " ) ) . read } )
MusicBrainz :: Client . any_instance . stub ( :get_contents ) . with ( 'http://musicbrainz.org/ws/2/release?release-group=6f33e0f0-cde2-38f9-9aee-2c60af8d1a61&inc=media+release-groups&limit=100' ) .
and_return ( { status : 200 , body : File . open ( File . join ( File . dirname ( __FILE__ ) , " ../fixtures/release/list.xml " ) ) . read } )
2013-01-22 15:04:15 +00:00
releases = MusicBrainz :: ReleaseGroup . find ( " 6f33e0f0-cde2-38f9-9aee-2c60af8d1a61 " ) . releases
releases . length . should be > = 5
2014-02-05 13:53:36 +00:00
releases . first . id . should == " 30d5e730-ce0a-464d-93e1-7d76e4bb3e31 "
2013-01-22 15:04:15 +00:00
releases . first . status . should == " Official "
releases . first . title . should == " Empire "
releases . first . date . should == Date . new ( 2006 , 8 , 28 )
releases . first . country . should == " GB "
2013-01-24 20:12:58 +00:00
releases . first . type . should == " Album "
2013-01-22 15:04:15 +00:00
end
2012-07-04 13:10:47 +00:00
end
end