discogs-wrapper 1.1.4 → 2.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/LICENSE +9 -0
- data/README.markdown +123 -43
- data/lib/discogs-wrapper.rb +1 -0
- data/lib/discogs.rb +1 -0
- data/lib/wrapper/authentication.rb +56 -0
- data/lib/wrapper/wrapper.rb +732 -43
- data/spec/samples/valid_artist.json +1 -0
- data/spec/samples/valid_artist_releases.json +1 -0
- data/spec/samples/valid_fields.json +48 -0
- data/spec/samples/valid_folder.json +6 -0
- data/spec/samples/valid_identity.json +6 -0
- data/spec/samples/valid_label.json +1 -0
- data/spec/samples/valid_label_releases.json +1 -0
- data/spec/samples/valid_listing.json +1 -0
- data/spec/samples/valid_master_release.json +1 -0
- data/spec/samples/valid_master_release_versions.json +1 -0
- data/spec/samples/valid_order.json +57 -0
- data/spec/samples/valid_order_messages.json +102 -0
- data/spec/samples/valid_orders.json +68 -0
- data/spec/samples/valid_price_suggestions.json +34 -0
- data/spec/samples/valid_release.json +1 -0
- data/spec/samples/valid_search_results.json +1 -0
- data/spec/samples/valid_user.json +1 -0
- data/spec/samples/valid_user_collection.json +1 -0
- data/spec/samples/valid_user_folder.json +6 -0
- data/spec/samples/valid_user_folders.json +16 -0
- data/spec/samples/valid_user_inventory.json +41 -0
- data/spec/samples/valid_user_profile.json +25 -0
- data/spec/samples/valid_user_wantlist.json +1 -0
- data/spec/samples/valid_wantlist_release.json +41 -0
- data/spec/spec_helper.rb +4 -18
- data/spec/wrapper_methods/add_release_to_user_wantlist_spec.rb +42 -0
- data/spec/wrapper_methods/edit_release_in_user_wantlist_spec.rb +38 -0
- data/spec/wrapper_methods/edit_user_spec.rb +36 -0
- data/spec/wrapper_methods/get_artist_releases_spec.rb +49 -0
- data/spec/wrapper_methods/get_artist_spec.rb +15 -75
- data/spec/wrapper_methods/get_identity_spec.rb +35 -0
- data/spec/wrapper_methods/get_label_releases_spec.rb +49 -0
- data/spec/wrapper_methods/get_label_spec.rb +15 -28
- data/spec/wrapper_methods/get_listing_spec.rb +40 -0
- data/spec/wrapper_methods/get_master_release_spec.rb +16 -42
- data/spec/wrapper_methods/get_master_release_versions_spec.rb +49 -0
- data/spec/wrapper_methods/get_order_messages_spec.rb +36 -0
- data/spec/wrapper_methods/get_order_spec.rb +36 -0
- data/spec/wrapper_methods/get_price_suggestions_spec.rb +36 -0
- data/spec/wrapper_methods/get_release_spec.rb +26 -52
- data/spec/wrapper_methods/get_user_collection_spec.rb +41 -0
- data/spec/wrapper_methods/get_user_folder_spec.rb +46 -0
- data/spec/wrapper_methods/get_user_folders_spec.rb +42 -0
- data/spec/wrapper_methods/get_user_inventory_spec.rb +45 -0
- data/spec/wrapper_methods/get_user_spec.rb +45 -0
- data/spec/wrapper_methods/get_user_wantlist_spec.rb +49 -0
- data/spec/wrapper_methods/search_spec.rb +22 -293
- data/spec/wrapper_spec.rb +124 -45
- metadata +162 -67
- data/Rakefile +0 -26
- data/discogs.gemspec +0 -22
- data/lib/wrapper/resource.rb +0 -80
- data/lib/wrapper/resource_mappings.rb +0 -80
- data/lib/wrapper/resources/artist.rb +0 -40
- data/lib/wrapper/resources/artist_release.rb +0 -28
- data/lib/wrapper/resources/format.rb +0 -11
- data/lib/wrapper/resources/generic_list.rb +0 -29
- data/lib/wrapper/resources/image.rb +0 -11
- data/lib/wrapper/resources/label.rb +0 -16
- data/lib/wrapper/resources/label_release.rb +0 -17
- data/lib/wrapper/resources/master_release.rb +0 -19
- data/lib/wrapper/resources/master_release_version.rb +0 -17
- data/lib/wrapper/resources/release.rb +0 -25
- data/lib/wrapper/resources/release_artist.rb +0 -21
- data/lib/wrapper/resources/release_label.rb +0 -10
- data/lib/wrapper/resources/search.rb +0 -61
- data/lib/wrapper/resources/search_result.rb +0 -17
- data/lib/wrapper/resources/track.rb +0 -19
- data/lib/wrapper/resources/user.rb +0 -11
- data/lib/wrapper/resources/video.rb +0 -11
- data/spec/resource_spec.rb +0 -27
- data/spec/resources/artist_release_spec.rb +0 -59
- data/spec/resources/artist_spec.rb +0 -15
- data/spec/resources/format_spec.rb +0 -41
- data/spec/resources/generic_list_spec.rb +0 -66
- data/spec/resources/image_spec.rb +0 -43
- data/spec/resources/label_release_spec.rb +0 -55
- data/spec/resources/label_spec.rb +0 -15
- data/spec/resources/master_release_spec.rb +0 -15
- data/spec/resources/master_release_version_spec.rb +0 -55
- data/spec/resources/release_artist_spec.rb +0 -43
- data/spec/resources/release_label_spec.rb +0 -31
- data/spec/resources/release_spec.rb +0 -15
- data/spec/resources/search_result_spec.rb +0 -47
- data/spec/resources/search_spec.rb +0 -15
- data/spec/resources/track_spec.rb +0 -56
- data/spec/resources/video_spec.rb +0 -43
@@ -4,44 +4,44 @@ describe Discogs::Wrapper do
|
|
4
4
|
|
5
5
|
before do
|
6
6
|
@wrapper = Discogs::Wrapper.new("some_user_agent")
|
7
|
-
@
|
7
|
+
@label_id = 1000
|
8
8
|
end
|
9
9
|
|
10
10
|
describe "when asking for label information" do
|
11
11
|
|
12
12
|
before do
|
13
13
|
@http_request = mock(Net::HTTP)
|
14
|
-
@http_response = mock(Net::HTTPResponse, :code => "200", :body =>
|
15
|
-
@http_response_as_file = mock(StringIO, :read =>
|
14
|
+
@http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("label"))
|
15
|
+
@http_response_as_file = mock(StringIO, :read => read_sample("label"))
|
16
16
|
Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
|
17
17
|
@http_request.should_receive(:start).and_return(@http_response)
|
18
18
|
Net::HTTP.should_receive(:new).and_return(@http_request)
|
19
19
|
|
20
|
-
@label = @wrapper.get_label(@
|
20
|
+
@label = @wrapper.get_label(@label_id)
|
21
21
|
end
|
22
22
|
|
23
23
|
describe "when calling simple label attributes" do
|
24
24
|
|
25
25
|
it "should have a name attribute" do
|
26
|
-
@label.name.should == "
|
26
|
+
@label.name.should == "Warner Bros. Records"
|
27
27
|
end
|
28
28
|
|
29
|
-
it "should have a
|
30
|
-
@label.
|
29
|
+
it "should have a releases_url attribute" do
|
30
|
+
@label.releases_url.should =~ /labels\/1000\/releases/
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should have a profile attribute" do
|
34
|
-
@label.profile.should
|
34
|
+
@label.profile.should =~ /Founded in 1958/
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should have a parent label attribute" do
|
38
|
-
@label.
|
38
|
+
@label.parent_label.name.should == "Warner Music Group"
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should have one or more URLs" do
|
42
42
|
@label.urls.should be_instance_of(Array)
|
43
|
-
@label.urls[0].should == "http://www.
|
44
|
-
@label.urls[1].should == "http://www.
|
43
|
+
@label.urls[0].should == "http://www.warnerbrosrecords.com/"
|
44
|
+
@label.urls[1].should == "http://www.facebook.com/WarnerBrosRecords"
|
45
45
|
end
|
46
46
|
|
47
47
|
end
|
@@ -50,17 +50,17 @@ describe Discogs::Wrapper do
|
|
50
50
|
|
51
51
|
it "should have a traversible list of images" do
|
52
52
|
@label.images.should be_instance_of(Array)
|
53
|
-
@label.images[0].should be_instance_of(Discogs::Image)
|
54
53
|
end
|
55
54
|
|
56
55
|
it "should have a traversible list of sub-labels" do
|
57
56
|
@label.sublabels.should be_instance_of(Array)
|
58
|
-
@label.sublabels[0].should == "
|
59
|
-
@label.sublabels[1].should == "Sony BMG"
|
57
|
+
@label.sublabels[0].name.should == "1017 Brick Squad Records"
|
60
58
|
end
|
61
59
|
|
62
60
|
it "should have specifications for each image" do
|
63
|
-
specs = [ [
|
61
|
+
specs = [ [ 600, 780, 'primary' ], [ 533, 698, 'secondary' ], [ 600, 600, 'secondary' ],
|
62
|
+
[ 532, 532, 'secondary' ], [ 175, 192, 'secondary' ], [ 200, 94, 'secondary' ],
|
63
|
+
[ 500, 493, 'secondary' ] ]
|
64
64
|
|
65
65
|
@label.images.each_with_index do |image, index|
|
66
66
|
image.width.should == specs[index][0]
|
@@ -69,19 +69,6 @@ describe Discogs::Wrapper do
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
it "should have a traversible list of releases" do
|
73
|
-
@label.releases.should be_instance_of(Array)
|
74
|
-
@label.releases[0].should be_instance_of(Discogs::Label::Release)
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should have a catno for the first release" do
|
78
|
-
@label.releases[0].catno.should == "SMB01"
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should have an artist name for the second release" do
|
82
|
-
@label.releases[1].artist.should == "Moonblood"
|
83
|
-
end
|
84
|
-
|
85
72
|
end
|
86
73
|
|
87
74
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Discogs::Wrapper do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@oauth_access_token = mock(OAuth::AccessToken)
|
7
|
+
@wrapper = Discogs::Wrapper.new("some_user_agent", @oauth_access_token)
|
8
|
+
@listing_id = 41578240
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".get_listing" do
|
12
|
+
|
13
|
+
before do
|
14
|
+
@oauth_response = mock(OAuth::AccessToken, :code => "200", :body => read_sample("listing"))
|
15
|
+
@oauth_response_as_file = mock(StringIO, :read => read_sample("listing"))
|
16
|
+
Zlib::GzipReader.should_receive(:new).and_return(@oauth_response_as_file)
|
17
|
+
@oauth_access_token.should_receive(:get).and_return(@oauth_response)
|
18
|
+
|
19
|
+
@listing = @wrapper.get_listing(@listing_id)
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "when calling simple listing attributes" do
|
23
|
+
|
24
|
+
it "should have a username" do
|
25
|
+
@listing.status.should == "For Sale"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have a weight" do
|
29
|
+
@listing.weight.should == 239.0
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have a seller" do
|
33
|
+
@listing.seller.username.should == "EmpireDVDs"
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -1,18 +1,19 @@
|
|
1
|
+
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Discogs::Wrapper do
|
4
5
|
|
5
6
|
before do
|
6
7
|
@wrapper = Discogs::Wrapper.new("some_user_agent")
|
7
|
-
@master_release_id = "
|
8
|
+
@master_release_id = "9800"
|
8
9
|
end
|
9
10
|
|
10
|
-
describe "
|
11
|
+
describe ".get_master_release" do
|
11
12
|
|
12
13
|
before do
|
13
14
|
@http_request = mock(Net::HTTP)
|
14
|
-
@http_response = mock(Net::HTTPResponse, :code => "200", :body =>
|
15
|
-
@http_response_as_file = mock(StringIO, :read =>
|
15
|
+
@http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("master_release"))
|
16
|
+
@http_response_as_file = mock(StringIO, :read => read_sample("master_release"))
|
16
17
|
Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
|
17
18
|
@http_request.should_receive(:start).and_return(@http_response)
|
18
19
|
Net::HTTP.should_receive(:new).and_return(@http_request)
|
@@ -20,46 +21,40 @@ describe Discogs::Wrapper do
|
|
20
21
|
@master_release = @wrapper.get_master_release(@master_release_id)
|
21
22
|
end
|
22
23
|
|
23
|
-
describe "when calling simple
|
24
|
+
describe "when calling simple master release attributes" do
|
24
25
|
|
25
26
|
it "should have an ID attribute" do
|
26
|
-
@master_release.id.should ==
|
27
|
+
@master_release.id.should == 9800
|
27
28
|
end
|
28
29
|
|
29
30
|
it "should have a main_release attribute" do
|
30
|
-
@master_release.main_release.should ==
|
31
|
+
@master_release.main_release.should == 5160870
|
31
32
|
end
|
32
33
|
|
33
34
|
it "should have one or more tracks" do
|
34
35
|
@master_release.tracklist.should be_instance_of(Array)
|
35
|
-
@master_release.tracklist[0].should
|
36
|
+
@master_release.tracklist[0].duration.should == "2:56"
|
36
37
|
end
|
37
38
|
|
38
39
|
it "should have one or more genres" do
|
39
40
|
@master_release.genres.should be_instance_of(Array)
|
40
|
-
@master_release.genres[0].should == "
|
41
|
+
@master_release.genres[0].should == "Rock"
|
41
42
|
end
|
42
43
|
|
43
|
-
it "should have
|
44
|
-
@master_release.
|
45
|
-
@master_release.versions[0].should be_instance_of(Discogs::MasterRelease::Version)
|
44
|
+
it "should have a versions_url" do
|
45
|
+
@master_release.versions_url.should =~ /masters\/9800\/versions/
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should have one or more images" do
|
49
49
|
@master_release.images.should be_instance_of(Array)
|
50
|
-
@master_release.images[0].should be_instance_of(Discogs::Image)
|
51
50
|
end
|
52
51
|
|
53
52
|
end
|
54
53
|
|
55
54
|
describe "when calling complex master_release attributes" do
|
56
55
|
|
57
|
-
it "should have a duration for the first track" do
|
58
|
-
@master_release.tracklist[0].duration.should == "4:42"
|
59
|
-
end
|
60
|
-
|
61
56
|
it "should have specifications for each image" do
|
62
|
-
specs = [ [
|
57
|
+
specs = [ [ 600, 607, 'primary' ], [ 600, 604, 'secondary' ], [ 600, 598, 'secondary' ], [ 600, 601, 'secondary' ] ]
|
63
58
|
@master_release.images.each_with_index do |image, index|
|
64
59
|
image.width.should == specs[index][0]
|
65
60
|
image.height.should == specs[index][1]
|
@@ -67,39 +62,18 @@ describe Discogs::Wrapper do
|
|
67
62
|
end
|
68
63
|
end
|
69
64
|
|
70
|
-
it "should have attributes for each version" do
|
71
|
-
specs = [ [ '1025', 'US', '2x12", Album' ], [ '4179', 'US', 'CD, Album' ], [ '416774', 'US', '12"' ] ]
|
72
|
-
@master_release.versions.each_with_index do |version, index|
|
73
|
-
version.id.should == specs[index][0]
|
74
|
-
version.country.should == specs[index][1]
|
75
|
-
version.format.should == specs[index][2]
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
65
|
it "should have a traversible list of styles" do
|
80
66
|
@master_release.styles.should be_instance_of(Array)
|
81
|
-
@master_release.styles[0].should == "
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should have an artist associated to the second track" do
|
85
|
-
@master_release.tracklist[1].artists.should be_instance_of(Array)
|
86
|
-
@master_release.tracklist[1].artists[0].should be_instance_of(Discogs::MasterRelease::Track::Artist)
|
87
|
-
@master_release.tracklist[1].artists[0].name.should == "Arakain"
|
67
|
+
@master_release.styles[0].should == "Prog Rock"
|
88
68
|
end
|
89
69
|
|
90
70
|
it "should have an extra artist associated to the second track" do
|
91
71
|
@master_release.tracklist[1].extraartists.should be_instance_of(Array)
|
92
|
-
@master_release.tracklist[1].extraartists[0].should
|
93
|
-
@master_release.tracklist[1].extraartists[0].name.should == "Debustrol"
|
94
|
-
@master_release.tracklist[1].extraartists[0].role.should == "Sadism"
|
95
|
-
end
|
96
|
-
|
97
|
-
it "should have no artist associated to the third track" do
|
98
|
-
@master_release.tracklist[2].artists.should be_nil
|
72
|
+
@master_release.tracklist[1].extraartists[0].role.should == "Lead Vocals"
|
99
73
|
end
|
100
74
|
|
101
75
|
end
|
102
76
|
|
103
77
|
end
|
104
78
|
|
105
|
-
end
|
79
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Discogs::Wrapper do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@wrapper = Discogs::Wrapper.new("some_user_agent")
|
7
|
+
@master_id = "9800"
|
8
|
+
end
|
9
|
+
|
10
|
+
describe ".get_master_release_versions" do
|
11
|
+
|
12
|
+
before do
|
13
|
+
@http_request = mock(Net::HTTP)
|
14
|
+
@http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("master_release_versions"))
|
15
|
+
@http_response_as_file = mock(StringIO, :read => read_sample("master_release_versions"))
|
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
|
+
@master_versions = @wrapper.get_master_release_versions(@master_id)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "when calling simple master release versions attributes" do
|
24
|
+
|
25
|
+
it "should have 3 versions per page" do
|
26
|
+
@master_versions.versions.length.should == 3
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have 3 versions total" do
|
30
|
+
@master_versions.pagination.items.should == 3
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have a first version with a label" do
|
34
|
+
@master_versions.versions.first.label.should == "Panton"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have a first release with a released field" do
|
38
|
+
@master_versions.versions.first.released.should == "1982"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should not have a bogus attribute" do
|
42
|
+
@master_versions.bogus_attribute.should be_nil
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Discogs::Wrapper do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@oauth_access_token = mock(OAuth::AccessToken)
|
7
|
+
@wrapper = Discogs::Wrapper.new("some_user_agent", @oauth_access_token)
|
8
|
+
@order_id = "1-1"
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".get_order_messages" do
|
12
|
+
|
13
|
+
before do
|
14
|
+
@oauth_response = mock(OAuth::AccessToken, :code => "200", :body => read_sample("order_messages"))
|
15
|
+
@oauth_response_as_file = mock(StringIO, :read => read_sample("order_messages"))
|
16
|
+
Zlib::GzipReader.should_receive(:new).and_return(@oauth_response_as_file)
|
17
|
+
@oauth_access_token.should_receive(:get).and_return(@oauth_response)
|
18
|
+
|
19
|
+
@order_messages = @wrapper.get_order_messages(@order_id)
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "when calling simple order messages attributes" do
|
23
|
+
|
24
|
+
it "should have an array of messages" do
|
25
|
+
@order_messages.messages.should be_instance_of(Array)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have a username for the first message" do
|
29
|
+
@order_messages.messages[0].from.username.should == "example_seller"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Discogs::Wrapper do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@oauth_access_token = mock(OAuth::AccessToken)
|
7
|
+
@wrapper = Discogs::Wrapper.new("some_user_agent", @oauth_access_token)
|
8
|
+
@order_id = "1-1"
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".get_order" do
|
12
|
+
|
13
|
+
before do
|
14
|
+
@oauth_response = mock(OAuth::AccessToken, :code => "200", :body => read_sample("order"))
|
15
|
+
@oauth_response_as_file = mock(StringIO, :read => read_sample("order"))
|
16
|
+
Zlib::GzipReader.should_receive(:new).and_return(@oauth_response_as_file)
|
17
|
+
@oauth_access_token.should_receive(:get).and_return(@oauth_response)
|
18
|
+
|
19
|
+
@order = @wrapper.get_order(@order_id)
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "when calling simple order attributes" do
|
23
|
+
|
24
|
+
it "should have a status" do
|
25
|
+
@order.status.should == "New Order"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have a fee" do
|
29
|
+
@order.fee.value.should == 2.52
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Discogs::Wrapper do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@oauth_access_token = mock(OAuth::AccessToken)
|
7
|
+
@wrapper = Discogs::Wrapper.new("some_user_agent", @oauth_access_token)
|
8
|
+
@release_id = "1"
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".get_price_suggestions" do
|
12
|
+
|
13
|
+
before do
|
14
|
+
@oauth_response = mock(OAuth::AccessToken, :code => "200", :body => read_sample("price_suggestions"))
|
15
|
+
@oauth_response_as_file = mock(StringIO, :read => read_sample("price_suggestions"))
|
16
|
+
Zlib::GzipReader.should_receive(:new).and_return(@oauth_response_as_file)
|
17
|
+
@oauth_access_token.should_receive(:get).and_return(@oauth_response)
|
18
|
+
|
19
|
+
@price_suggestions = @wrapper.get_price_suggestions(@release_id)
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "when calling simple price suggestion attributes" do
|
23
|
+
|
24
|
+
it "should have a block for Near Mint" do
|
25
|
+
@price_suggestions["Near Mint (NM or M-)"].should_not be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have a price for Mint" do
|
29
|
+
@price_suggestions["Mint (M)"].value.should == 14.319139100000001
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -1,18 +1,19 @@
|
|
1
|
+
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Discogs::Wrapper do
|
4
5
|
|
5
6
|
before do
|
6
7
|
@wrapper = Discogs::Wrapper.new("some_user_agent")
|
7
|
-
@release_id = "
|
8
|
+
@release_id = "1"
|
8
9
|
end
|
9
10
|
|
10
|
-
describe "
|
11
|
+
describe ".get_release" do
|
11
12
|
|
12
13
|
before do
|
13
14
|
@http_request = mock(Net::HTTP)
|
14
|
-
@http_response = mock(Net::HTTPResponse, :code => "200", :body =>
|
15
|
-
@http_response_as_file = mock(StringIO, :read =>
|
15
|
+
@http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("release"))
|
16
|
+
@http_response_as_file = mock(StringIO, :read => read_sample("release"))
|
16
17
|
Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
|
17
18
|
@http_request.should_receive(:start).and_return(@http_response)
|
18
19
|
Net::HTTP.should_receive(:new).and_return(@http_request)
|
@@ -23,58 +24,48 @@ describe Discogs::Wrapper do
|
|
23
24
|
describe "when calling simple release attributes" do
|
24
25
|
|
25
26
|
it "should have a title attribute" do
|
26
|
-
@release.title.should == "
|
27
|
+
@release.title.should == "Stockholm"
|
27
28
|
end
|
28
29
|
|
29
30
|
it "should have an ID attribute" do
|
30
|
-
@release.id.should ==
|
31
|
+
@release.id.should == 1
|
31
32
|
end
|
32
33
|
|
33
34
|
it "should have a master_id attribute" do
|
34
|
-
@release.master_id.should ==
|
35
|
+
@release.master_id.should == 5427
|
35
36
|
end
|
36
37
|
|
37
38
|
it "should have one or more extra artists" do
|
38
39
|
@release.extraartists.should be_instance_of(Array)
|
39
|
-
@release.extraartists[0].should
|
40
|
+
@release.extraartists[0].id.should == 239
|
40
41
|
end
|
41
42
|
|
42
43
|
it "should have one or more tracks" do
|
43
44
|
@release.tracklist.should be_instance_of(Array)
|
44
|
-
@release.tracklist[0].should
|
45
|
+
@release.tracklist[0].position.should == "A"
|
45
46
|
end
|
46
47
|
|
47
48
|
it "should have one or more genres" do
|
48
49
|
@release.genres.should be_instance_of(Array)
|
49
|
-
@release.genres[0].should == "
|
50
|
+
@release.genres[0].should == "Electronic"
|
50
51
|
end
|
51
52
|
|
52
53
|
it "should have one or more formats" do
|
53
54
|
@release.formats.should be_instance_of(Array)
|
54
|
-
@release.formats[0].should
|
55
|
+
@release.formats[0].name.should == "Vinyl"
|
55
56
|
end
|
56
57
|
|
57
58
|
it "should have one or more images" do
|
58
59
|
@release.images.should be_instance_of(Array)
|
59
|
-
@release.images[0].should
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should have one or more videos" do
|
63
|
-
@release.videos.should be_instance_of(Array)
|
64
|
-
@release.videos[0].should be_instance_of(Discogs::Video)
|
60
|
+
@release.images[0].type.should == "primary"
|
65
61
|
end
|
66
62
|
|
67
|
-
|
68
63
|
end
|
69
64
|
|
70
65
|
describe "when calling complex release attributes" do
|
71
66
|
|
72
|
-
it "should have a duration for the first track" do
|
73
|
-
@release.tracklist[0].duration.should == "8:11"
|
74
|
-
end
|
75
|
-
|
76
67
|
it "should have specifications for each image" do
|
77
|
-
specs = [ [
|
68
|
+
specs = [ [ 600, 600, 'primary' ], [ 600, 600, 'secondary' ], [ 600, 600, 'secondary' ], [ 600, 600, 'secondary' ] ]
|
78
69
|
@release.images.each_with_index do |image, index|
|
79
70
|
image.width.should == specs[index][0]
|
80
71
|
image.height.should == specs[index][1]
|
@@ -83,52 +74,35 @@ describe Discogs::Wrapper do
|
|
83
74
|
end
|
84
75
|
|
85
76
|
it "should have specifications for each video" do
|
86
|
-
specs = [ [
|
77
|
+
specs = [ [ 380, true, 'http://www.youtube.com/watch?v=5rA8CTKKEP4' ], [ 335, true, 'http://www.youtube.com/watch?v=QVdDhOnoR8k' ],
|
78
|
+
[ 290, true, 'http://www.youtube.com/watch?v=AHuQWcylaU4' ], [ 175, true, 'http://www.youtube.com/watch?v=sLZvvJVir5g' ],
|
79
|
+
[ 324, true, 'http://www.youtube.com/watch?v=js_g1qtPmL0' ], [ 289, true, 'http://www.youtube.com/watch?v=hy47qgyJeG0' ] ]
|
87
80
|
@release.videos.each_with_index do |video, index|
|
88
81
|
video.duration.should == specs[index][0]
|
89
82
|
video.embed.should == specs[index][1]
|
90
|
-
video.
|
83
|
+
video.uri.should == specs[index][2]
|
91
84
|
end
|
92
85
|
end
|
93
86
|
|
94
87
|
it "should have a traversible list of styles" do
|
95
88
|
@release.styles.should be_instance_of(Array)
|
96
|
-
@release.styles[0].should == "
|
97
|
-
@release.styles[1].should == "Thrash"
|
89
|
+
@release.styles[0].should == "Deep House"
|
98
90
|
end
|
99
91
|
|
100
92
|
it "should have a traversible list of labels" do
|
101
93
|
@release.styles.should be_instance_of(Array)
|
102
|
-
@release.labels[0].should
|
103
|
-
@release.labels[0].
|
104
|
-
@release.labels[0].name.should == "Culted"
|
94
|
+
@release.labels[0].catno.should == "SK032"
|
95
|
+
@release.labels[0].name.should == "Svek"
|
105
96
|
end
|
106
97
|
|
107
98
|
it "should have a name and quantity for the first format" do
|
108
|
-
@release.formats
|
109
|
-
@release.formats[0].
|
110
|
-
|
111
|
-
|
112
|
-
it "should have an array of descriptions for the first format" do
|
113
|
-
@release.formats[0].descriptions.should be_instance_of(Array)
|
114
|
-
@release.formats[0].descriptions[0].should == "Album"
|
115
|
-
end
|
116
|
-
|
117
|
-
it "should have an artist associated to the second track" do
|
118
|
-
@release.tracklist[1].artists.should be_instance_of(Array)
|
119
|
-
@release.tracklist[1].artists[0].should be_instance_of(Discogs::Release::Track::Artist)
|
120
|
-
@release.tracklist[1].artists[0].name.should == "Arakain"
|
121
|
-
end
|
122
|
-
|
123
|
-
it "should have an extra artist associated to the second track" do
|
124
|
-
@release.tracklist[1].extraartists.should be_instance_of(Array)
|
125
|
-
@release.tracklist[1].extraartists[0].should be_instance_of(Discogs::Release::Track::Artist)
|
126
|
-
@release.tracklist[1].extraartists[0].name.should == "Debustrol"
|
127
|
-
@release.tracklist[1].extraartists[0].role.should == "Sadism"
|
99
|
+
@release.formats.should be_instance_of(Array)
|
100
|
+
@release.formats[0].name.should == "Vinyl"
|
101
|
+
@release.formats[0].qty.should == "2"
|
128
102
|
end
|
129
103
|
|
130
104
|
it "should have a role associated to the first extra artist" do
|
131
|
-
@release.extraartists[0].role.should == "
|
105
|
+
@release.extraartists[0].role.should == "Music By [All Tracks By]"
|
132
106
|
end
|
133
107
|
|
134
108
|
it "should have no artist associated to the third track" do
|
@@ -139,4 +113,4 @@ describe Discogs::Wrapper do
|
|
139
113
|
|
140
114
|
end
|
141
115
|
|
142
|
-
end
|
116
|
+
end
|