discogs-wrapper 1.0.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.
- data/README.markdown +81 -0
- data/Rakefile +27 -0
- data/discogs.gemspec +19 -0
- data/lib/discogs.rb +20 -0
- data/lib/wrapper/resource.rb +79 -0
- data/lib/wrapper/resource_mappings.rb +84 -0
- data/lib/wrapper/resources/artist.rb +37 -0
- data/lib/wrapper/resources/artist_release.rb +17 -0
- data/lib/wrapper/resources/format.rb +11 -0
- data/lib/wrapper/resources/generic_list.rb +29 -0
- data/lib/wrapper/resources/image.rb +11 -0
- data/lib/wrapper/resources/label.rb +16 -0
- data/lib/wrapper/resources/label_release.rb +17 -0
- data/lib/wrapper/resources/release.rb +22 -0
- data/lib/wrapper/resources/release_artist.rb +18 -0
- data/lib/wrapper/resources/release_label.rb +10 -0
- data/lib/wrapper/resources/search.rb +61 -0
- data/lib/wrapper/resources/search_result.rb +16 -0
- data/lib/wrapper/resources/track.rb +15 -0
- data/lib/wrapper/wrapper.rb +105 -0
- data/spec/resource_spec.rb +27 -0
- data/spec/resources/artist_release_spec.rb +59 -0
- data/spec/resources/artist_spec.rb +15 -0
- data/spec/resources/format_spec.rb +41 -0
- data/spec/resources/generic_list_spec.rb +66 -0
- data/spec/resources/image_spec.rb +43 -0
- data/spec/resources/label_release_spec.rb +55 -0
- data/spec/resources/label_spec.rb +15 -0
- data/spec/resources/release_artist_spec.rb +43 -0
- data/spec/resources/release_label_spec.rb +31 -0
- data/spec/resources/release_spec.rb +15 -0
- data/spec/resources/search_result_spec.rb +47 -0
- data/spec/resources/search_spec.rb +15 -0
- data/spec/resources/track_spec.rb +56 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/wrapper_methods/get_artist_spec.rb +109 -0
- data/spec/wrapper_methods/get_label_spec.rb +89 -0
- data/spec/wrapper_methods/get_release_spec.rb +123 -0
- data/spec/wrapper_methods/search_spec.rb +330 -0
- data/spec/wrapper_spec.rb +162 -0
- metadata +126 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Image do
|
4
|
+
|
5
|
+
it "should map to image" do
|
6
|
+
Discogs::Image.element_names.should == [ :image ]
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map to plural images" do
|
10
|
+
Discogs::Image.plural_element_names.should == [ :images ]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when asking for image information" do
|
14
|
+
|
15
|
+
before do
|
16
|
+
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_image.xml"))
|
17
|
+
@image = Discogs::Image.new(data)
|
18
|
+
@image.build!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a type attribute" do
|
22
|
+
@image.type.should == "primary"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a width attribute" do
|
26
|
+
@image.width.should == "600"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a height attribute" do
|
30
|
+
@image.height.should == "595"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have a uri attribute" do
|
34
|
+
@image.uri.should == "http://www.discogs.com/image/R-666-1222413500.jpeg"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have a uri150 attribute" do
|
38
|
+
@image.uri150.should == "http://www.discogs.com/image/R-150-666-1222413500.jpeg"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Label::Release do
|
4
|
+
|
5
|
+
it "should map to release" do
|
6
|
+
Discogs::Label::Release.element_names.should == [ :release ]
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map to plural releases" do
|
10
|
+
Discogs::Label::Release.plural_element_names.should == [ :releases ]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when asking for label-release information" do
|
14
|
+
|
15
|
+
before do
|
16
|
+
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_label_release.xml"))
|
17
|
+
@label_release = Discogs::Label::Release.new(data)
|
18
|
+
@label_release.build!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a ID attribute" do
|
22
|
+
@label_release.id.should == "116322"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a status attribute" do
|
26
|
+
@label_release.status.should == "Accepted"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a catno attribute" do
|
30
|
+
@label_release.catno.should == "SMB09"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have an artist attribute" do
|
34
|
+
@label_release.artist.should == "Morrior"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have a title attribute" do
|
38
|
+
@label_release.title.should == "Death Metal Session"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should have a format attribute" do
|
42
|
+
@label_release.format.should == "12\""
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should have a year attribute" do
|
46
|
+
@label_release.year.should == "1991"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should have a trackinfo attribute" do
|
50
|
+
@label_release.trackinfo.should == "Side A, track 4"
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Label do
|
4
|
+
|
5
|
+
it "should map to empty array" do
|
6
|
+
Discogs::Label.element_names.should == []
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map plural to empty array" do
|
10
|
+
Discogs::Label.plural_element_names.should == []
|
11
|
+
end
|
12
|
+
|
13
|
+
## See ./spec/wrapper_methods/get_label_spec.rb for extensive tests of this class.
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Release::Artist do
|
4
|
+
|
5
|
+
it "should map to artist" do
|
6
|
+
Discogs::Release::Artist.element_names.should == [ :artist ]
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map to plural artists and extraartists" do
|
10
|
+
Discogs::Release::Artist.plural_element_names.should == [ :artists, :extraartists ]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when asking for release-artist information" do
|
14
|
+
|
15
|
+
before do
|
16
|
+
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_release_artist.xml"))
|
17
|
+
@release_artist = Discogs::Release::Artist.new(data)
|
18
|
+
@release_artist.build!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a name attribute" do
|
22
|
+
@release_artist.name.should == "Master's Hammer"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a role attribute" do
|
26
|
+
@release_artist.role.should == "Shrieks"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a join attribute" do
|
30
|
+
@release_artist.join.should == "Relatives"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have an anv attribute" do
|
34
|
+
@release_artist.anv.should == "wtf?"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have a tracks attribute" do
|
38
|
+
@release_artist.tracks.should == "1,2,4"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Release::Label do
|
4
|
+
|
5
|
+
it "should map to label" do
|
6
|
+
Discogs::Release::Label.element_names.should == [ :label ]
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map to plural labels" do
|
10
|
+
Discogs::Release::Label.plural_element_names.should == [ :labels ]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when asking for release-label information" do
|
14
|
+
|
15
|
+
before do
|
16
|
+
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_release_label.xml"))
|
17
|
+
@release_label = Discogs::Release::Label.new(data)
|
18
|
+
@release_label.build!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a name attribute" do
|
22
|
+
@release_label.name.should == "Toxic Diffusion"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a catno attribute" do
|
26
|
+
@release_label.catno.should == "clp89"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Release do
|
4
|
+
|
5
|
+
it "should map to empty array" do
|
6
|
+
Discogs::Release.element_names.should == []
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map plural to empty array" do
|
10
|
+
Discogs::Release.plural_element_names.should == []
|
11
|
+
end
|
12
|
+
|
13
|
+
## See ./spec/wrapper_methods/get_release_spec.rb for extensive tests of this class.
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Search::Result do
|
4
|
+
|
5
|
+
it "should map to result" do
|
6
|
+
Discogs::Search::Result.element_names.should == [ :result ]
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map to plural exactresults and searchresults" do
|
10
|
+
Discogs::Search::Result.plural_element_names.should == [ :exactresults, :searchresults ]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when asking for search result information" do
|
14
|
+
|
15
|
+
before do
|
16
|
+
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_search_result.xml"))
|
17
|
+
@search_result = Discogs::Search::Result.new(data)
|
18
|
+
@search_result.build!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a number attribute" do
|
22
|
+
@search_result.num.should == "2"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a type attribute" do
|
26
|
+
@search_result.type.should == "artist"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a title attribute" do
|
30
|
+
@search_result.title.should == "Karin Slaughter"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have a uri attribute" do
|
34
|
+
@search_result.uri.should == "http://www.discogs.com/artist/Karin+Slaughter"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have a summary attribute" do
|
38
|
+
@search_result.summary.should == "Karin Slaughter Karin Slaughter"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should have a anv attribute" do
|
42
|
+
@search_result.anv.should == "Slaughter"
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Search do
|
4
|
+
|
5
|
+
it "should map to empty array" do
|
6
|
+
Discogs::Search.element_names.should == []
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map plural to empty array" do
|
10
|
+
Discogs::Search.plural_element_names.should == []
|
11
|
+
end
|
12
|
+
|
13
|
+
## See ./spec/wrapper_methods/search_spec.rb for extensive tests of this class.
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Release::Track do
|
4
|
+
|
5
|
+
it "should map to track" do
|
6
|
+
Discogs::Release::Track.element_names.should == [ :track ]
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should map to plural tracklist" do
|
10
|
+
Discogs::Release::Track.plural_element_names.should == [ :tracklist ]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when asking for track information" do
|
14
|
+
|
15
|
+
before do
|
16
|
+
data = File.read(File.join(File.dirname(__FILE__), "..", "samples", "valid_track.xml"))
|
17
|
+
@track = Discogs::Release::Track.new(data)
|
18
|
+
@track.build!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should have a title attribute" do
|
22
|
+
@track.title.should == "A dark forest spreads all around"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have a duration attribute" do
|
26
|
+
@track.duration.should == "7:31"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a position attribute" do
|
30
|
+
@track.position.should == "2"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have an array of artists" do
|
34
|
+
@track.artists.should be_instance_of(Array)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have an array of extra artists" do
|
38
|
+
@track.extraartists.should be_instance_of(Array)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should have built each artist" do
|
42
|
+
@track.artists[0].should be_instance_of(Discogs::Release::Track::Artist)
|
43
|
+
|
44
|
+
@track.artists[0].name.should == "Master's Hammer"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should have built each extra artist" do
|
48
|
+
@track.extraartists[0].should be_instance_of(Discogs::Release::Track::Artist)
|
49
|
+
|
50
|
+
@track.extraartists[0].name.should == "Root"
|
51
|
+
@track.extraartists[0].role.should == "Imagery"
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'spec'
|
3
|
+
require File.dirname(__FILE__) + '/../lib/discogs'
|
4
|
+
|
5
|
+
def valid_release_xml
|
6
|
+
read_sample "valid_release.xml"
|
7
|
+
end
|
8
|
+
|
9
|
+
def valid_artist_xml
|
10
|
+
read_sample "valid_artist.xml"
|
11
|
+
end
|
12
|
+
|
13
|
+
def valid_label_xml
|
14
|
+
read_sample "valid_label.xml"
|
15
|
+
end
|
16
|
+
|
17
|
+
def valid_search_xml(page=1)
|
18
|
+
read_sample "valid_search_results_#{page}.xml"
|
19
|
+
end
|
20
|
+
|
21
|
+
def read_sample(filename)
|
22
|
+
data = File.read(File.join(File.dirname(__FILE__), "samples", filename))
|
23
|
+
data.gsub /\n/, ''
|
24
|
+
end
|
25
|
+
|
26
|
+
def sample_valid_binary
|
27
|
+
"\037\213\b\000\325\3054J\002\377\265T\337O\3330\020\376W,?L\233D\353\004(\203\315\215D\3304\020T\233V\006\017\323\036\214}4\036\211\035l\207\222\377~\227_U\v\025C\232\366\344\273\363\335\227/\337\335\231;\360%\361A\204)\265w\224<\200\363\332\232)\215\307\021%\016\356+\360\301\243K\023\356 \a\341\201h\205\376\036m\253*\274;\226\022\312\000\nSt!\026\340\373\223d\240\027\031\002\037D\210\025\352\022\246\324\203\264F\tWSR9=\245Y\b\345\a\306\226\313\345Xi/\355\302\217\245-X\213\303\276\217\342\275Q\034\037\306\373\321\321\321d2\376]\302\242\255\213'\321\337K'\321\326\362\245V!\3539\261\377\302\3640\376'\246\253\362'L;QP\\\341\202\306\246\fF\302\215( \231Ykd\246s\345\300p\326\2068\353R\223\301\300\232\240C\016I\n5\266\201\\\330\a\340\254\v\361\\\334@\216\031\355I\244\b\306N\351\247\375\213x7\212\336S\322 \242\017P\356_\350[\240\004\305cC\r<\006'\266\363:\267\372F\aK\336\210\242\374HR{W\r\354\234E&_C\006\216\374\234\227\332\351P\211\\\207\372\027g\355\325\300\372\311\217\236[Wo@\\Y)r\377r\321I\346\264'_\234\330,\275\306\217\0060\243\264\336!\337\234U\225\004\267Cf\372\021\024I1\365\t\017\266\371\237\267\326\025\242iDg\364\022]iS\347\224\334\207\272[\e\005^:]\006\\+L]\363\222x\227r\266\036\330\3600\231u\300+\003C\v0\270\262\375\231|\316A\006g\215\226\234\2657\230:d\370P\347Mf{&\227 3c9\353\274>\330t\223\234\332\312\343\024\364\027\335\211e\322V&\270:\3711\347l\260\207'@%8\023\321(:\034E\021\212\324\275\v\n\a\321\006\374b/\352\016);E\025\0218kE+*\376\020\312\213\356Lx\217o\005\231U^K\3626\235\235\275\ecW[\000\216\303$\357r\034r\234\327\306Lxi\275n\024L\216c\316V\316\v\323\254*'\232\202vL{\220gX\273\317\261\25630\344\004[%5\352BR|\257\n\360\030)\220zX-\313k\340\323-TOA<4\373\331\357\334\253`\266\260<3\270Q\227\031\220y\300\031|\021\216\255\2119\264\n\247\244y\367\223?4\242\342\264\376\005\000\000"
|
28
|
+
end
|
29
|
+
|
30
|
+
def sample_invalid_data
|
31
|
+
<<-EOF
|
32
|
+
<resp requests="2" stat="fail">
|
33
|
+
<error>Missing or invalid User agent</error>
|
34
|
+
</resp>
|
35
|
+
EOF
|
36
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../spec_helper"
|
2
|
+
|
3
|
+
describe Discogs::Wrapper do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@wrapper = Discogs::Wrapper.new("some_user_agent")
|
7
|
+
@artist_name = "Root"
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "when asking for artist information" do
|
11
|
+
|
12
|
+
before do
|
13
|
+
@http_request = mock(Net::HTTP)
|
14
|
+
@http_response = mock(Net::HTTPResponse, :code => "200", :body => valid_artist_xml)
|
15
|
+
@http_response_as_file = mock(StringIO, :read => valid_artist_xml)
|
16
|
+
Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
|
17
|
+
@http_request.should_receive(:start).and_return(@http_response)
|
18
|
+
Net::HTTP.should_receive(:new).and_return(@http_request)
|
19
|
+
|
20
|
+
@artist = @wrapper.get_artist(@artist_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "when calling simple artist attributes" do
|
24
|
+
|
25
|
+
it "should have a name attribute" do
|
26
|
+
@artist.name.should == "Root"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a realname attribute" do
|
30
|
+
@artist.realname.should == "Rootan"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have one or more aliases" do
|
34
|
+
@artist.aliases.should be_instance_of(Array)
|
35
|
+
@artist.aliases[0].should == "Roooot"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should have one or more name variations" do
|
39
|
+
@artist.namevariations.should be_instance_of(Array)
|
40
|
+
@artist.namevariations[0].should == "Rootan"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should have one or more members" do
|
44
|
+
@artist.members.should be_instance_of(Array)
|
45
|
+
@artist.members[0].should == "Big Boss"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should be able to filter non-main releases" do
|
49
|
+
@artist.main_releases.should be_instance_of(Array)
|
50
|
+
@artist.main_releases.length.should == 4
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should be able to filter non-bootleg releases" do
|
54
|
+
@artist.bootlegs.should be_instance_of(Array)
|
55
|
+
@artist.bootlegs.length.should == 1
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should be able to filter non-main releases" do
|
59
|
+
@artist.appearances.should be_instance_of(Array)
|
60
|
+
@artist.appearances.length.should == 1
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "when calling complex artist attributes" do
|
66
|
+
|
67
|
+
it "should have a traversible list of URLs" do
|
68
|
+
@artist.urls.should be_instance_of(Array)
|
69
|
+
@artist.urls[0].should == "http://www.root.net"
|
70
|
+
@artist.urls[1].should == "http://www.rootan.com"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should have a traversible list of images" do
|
74
|
+
@artist.images.should be_instance_of(Array)
|
75
|
+
@artist.images[0].should be_instance_of(Discogs::Image)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should have specifications for each image" do
|
79
|
+
specs = [ [ '350', '240', 'secondary' ], [ '222', '226', 'secondary' ], [ '600', '600', 'primary' ] ]
|
80
|
+
@artist.images.each_with_index do |image, index|
|
81
|
+
image.width.should == specs[index][0]
|
82
|
+
image.height.should == specs[index][1]
|
83
|
+
image.type.should == specs[index][2]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should have a traversible list of releases" do
|
88
|
+
@artist.releases.should be_instance_of(Array)
|
89
|
+
@artist.releases.length.should == 6
|
90
|
+
@artist.releases[0].should be_instance_of(Discogs::Artist::Release)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should have an ID for the first release" do
|
94
|
+
@artist.releases[0].id.should == "1805661"
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should have a year for the first release" do
|
98
|
+
@artist.releases[0].year.should == "1991"
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should have a label for the third release" do
|
102
|
+
@artist.releases[2].label.should == "Apollo"
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|