rbrainz 0.4.2 → 0.5.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/CHANGES +13 -1
- data/LICENSE +1 -1
- data/README +2 -2
- data/Rakefile +2 -2
- data/TODO +9 -2
- data/doc/README.rdoc +5 -5
- data/examples/getartist.rb +3 -2
- data/examples/getlabel.rb +3 -2
- data/examples/getrelease.rb +5 -2
- data/examples/getreleasegroup.rb +53 -0
- data/examples/gettrack.rb +3 -2
- data/examples/getuser.rb +2 -1
- data/examples/rate.rb +44 -0
- data/examples/searchartists.rb +3 -2
- data/examples/searchcdstubs.rb +41 -0
- data/examples/searchlabels.rb +3 -2
- data/examples/searchreleasegroups.rb +36 -0
- data/examples/searchreleases.rb +6 -4
- data/examples/searchtracks.rb +3 -2
- data/examples/submit_isrcs.rb +52 -0
- data/examples/tag.rb +3 -2
- data/lib/rbrainz.rb +2 -1
- data/lib/rbrainz/core_ext.rb +2 -1
- data/lib/rbrainz/core_ext/mbid.rb +2 -1
- data/lib/rbrainz/core_ext/net_http_digest.rb +3 -2
- data/lib/rbrainz/core_ext/range.rb +3 -2
- data/lib/rbrainz/core_ext/range/equality.rb +2 -1
- data/lib/rbrainz/data/countrynames.rb +6 -3
- data/lib/rbrainz/data/languagenames.rb +3 -2
- data/lib/rbrainz/data/releasetypenames.rb +3 -2
- data/lib/rbrainz/data/scriptnames.rb +3 -2
- data/lib/rbrainz/model.rb +3 -2
- data/lib/rbrainz/model/alias.rb +3 -2
- data/lib/rbrainz/model/artist.rb +11 -3
- data/lib/rbrainz/model/collection.rb +3 -2
- data/lib/rbrainz/model/default_factory.rb +18 -6
- data/lib/rbrainz/model/disc.rb +3 -2
- data/lib/rbrainz/model/entity.rb +2 -102
- data/lib/rbrainz/model/incomplete_date.rb +3 -2
- data/lib/rbrainz/model/individual.rb +11 -2
- data/lib/rbrainz/model/isrc.rb +100 -0
- data/lib/rbrainz/model/label.rb +5 -2
- data/lib/rbrainz/model/mbid.rb +28 -9
- data/lib/rbrainz/model/rateable.rb +34 -0
- data/lib/rbrainz/model/rating.rb +56 -0
- data/lib/rbrainz/model/relateable.rb +118 -0
- data/lib/rbrainz/model/relation.rb +2 -1
- data/lib/rbrainz/model/release.rb +17 -3
- data/lib/rbrainz/model/release_event.rb +3 -2
- data/lib/rbrainz/model/release_group.rb +97 -0
- data/lib/rbrainz/model/scored_collection.rb +3 -2
- data/lib/rbrainz/model/tag.rb +5 -4
- data/lib/rbrainz/model/taggable.rb +27 -0
- data/lib/rbrainz/model/track.rb +15 -2
- data/lib/rbrainz/model/user.rb +3 -2
- data/lib/rbrainz/utils.rb +2 -1
- data/lib/rbrainz/utils/data.rb +3 -2
- data/lib/rbrainz/utils/helper.rb +8 -2
- data/lib/rbrainz/version.rb +3 -2
- data/lib/rbrainz/webservice.rb +12 -7
- data/lib/rbrainz/webservice/filter.rb +53 -4
- data/lib/rbrainz/webservice/includes.rb +72 -11
- data/lib/rbrainz/webservice/mbxml.rb +129 -67
- data/lib/rbrainz/webservice/query.rb +156 -16
- data/lib/rbrainz/webservice/webservice.rb +104 -116
- data/test/lib/mock_webservice.rb +9 -2
- data/test/lib/test_entity.rb +2 -97
- data/test/lib/test_factory.rb +9 -1
- data/test/lib/test_rateable.rb +31 -0
- data/test/lib/test_relateable.rb +103 -0
- data/test/lib/test_taggable.rb +36 -0
- data/test/lib/testing_helper.rb +17 -2
- data/test/test-data/invalid/artist/ratings_1.xml +6 -0
- data/test/test-data/invalid/artist/ratings_2.xml +6 -0
- data/test/test-data/valid/artist/Tchaikovsky-2.xml +6 -0
- data/test/test-data/valid/label/Atlantic_Records_3.xml +6 -0
- data/test/test-data/valid/release-group/The_Cure_1.xml +36 -0
- data/test/test-data/valid/release/Highway_61_Revisited_2.xml +6 -0
- data/test/test-data/valid/track/Silent_All_These_Years_4.xml +3 -0
- data/test/test-data/valid/track/Silent_All_These_Years_6.xml +8 -0
- data/test/test_alias.rb +2 -1
- data/test/test_artist.rb +24 -2
- data/test/test_artist_filter.rb +2 -1
- data/test/test_artist_includes.rb +13 -3
- data/test/test_collection.rb +3 -2
- data/test/test_default_factory.rb +8 -1
- data/test/test_disc.rb +2 -1
- data/test/test_incomplete_date.rb +2 -1
- data/test/test_isrc.rb +87 -0
- data/test/test_label.rb +8 -1
- data/test/test_label_filter.rb +2 -1
- data/test/test_label_includes.rb +10 -3
- data/test/test_mbid.rb +2 -1
- data/test/test_mbxml.rb +93 -2
- data/test/test_query.rb +68 -5
- data/test/test_range_equality.rb +2 -1
- data/test/test_rating.rb +46 -0
- data/test/test_relation.rb +2 -1
- data/test/test_release.rb +37 -2
- data/test/test_release_event.rb +2 -1
- data/test/test_release_filter.rb +15 -2
- data/test/test_release_group.rb +104 -0
- data/test/test_release_group_filter.rb +61 -0
- data/test/test_release_group_includes.rb +46 -0
- data/test/test_release_includes.rb +16 -3
- data/test/test_scored_collection.rb +3 -2
- data/test/test_tag.rb +2 -1
- data/test/test_track.rb +28 -1
- data/test/test_track_filter.rb +2 -1
- data/test/test_track_includes.rb +13 -3
- data/test/test_utils.rb +2 -1
- data/test/test_webservice.rb +11 -1
- metadata +38 -20
- data/debian/changelog +0 -11
- data/debian/compat +0 -1
- data/debian/control +0 -13
- data/debian/copyright +0 -25
- data/debian/rules +0 -48
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
<track id="d6118046-407d-4e06-a1ba-49c399a4c42f">
|
|
6
6
|
<title>Silent All These Years</title>
|
|
7
7
|
<duration>253466</duration>
|
|
8
|
+
<isrc-list>
|
|
9
|
+
<isrc id="USPR37300012"/>
|
|
10
|
+
</isrc-list>
|
|
8
11
|
<artist id="c0b2500e-0cef-4130-869d-732b23ed9df5" type="Person">
|
|
9
12
|
<name>Tori Amos</name>
|
|
10
13
|
<sort-name>Amos, Tori</sort-name>
|
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
<track id="d6118046-407d-4e06-a1ba-49c399a4c42f">
|
|
4
4
|
<title>Silent All These Years</title>
|
|
5
5
|
<duration>253466</duration>
|
|
6
|
+
<isrc-list>
|
|
7
|
+
<isrc id="USPR37300012"/>
|
|
8
|
+
</isrc-list>
|
|
6
9
|
<tag-list></tag-list>
|
|
10
|
+
<user-tag-list>
|
|
11
|
+
<user-tag>foo</user-tag>
|
|
12
|
+
</user-tag-list>
|
|
13
|
+
<rating votes-count="10">4.5</rating>
|
|
14
|
+
<user-rating>3</user-rating>
|
|
7
15
|
</track>
|
|
8
16
|
</metadata>
|
data/test/test_alias.rb
CHANGED
data/test/test_artist.rb
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_artist.rb 258 2009-05-17 17:43:58Z phw $
|
|
2
3
|
#
|
|
3
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
4
|
-
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
|
5
|
+
# Copyright:: Copyright (c) 2007-2009, Philipp Wolfer
|
|
5
6
|
# License:: RBrainz is free software distributed under a BSD style license.
|
|
6
7
|
# See LICENSE[file:../LICENSE.html] for permissions.
|
|
7
8
|
|
|
8
9
|
require 'test_entity'
|
|
10
|
+
require 'test_rateable'
|
|
11
|
+
require 'test_relateable'
|
|
12
|
+
require 'test_taggable'
|
|
9
13
|
|
|
10
14
|
# Unit test for the Artist model.
|
|
11
15
|
class TestArtist < Test::Unit::TestCase
|
|
@@ -13,6 +17,7 @@ class TestArtist < Test::Unit::TestCase
|
|
|
13
17
|
def setup
|
|
14
18
|
@tested_class = Model::Artist
|
|
15
19
|
@invalid_entity_types = [:release, :track, :label]
|
|
20
|
+
@release_groups = [Model::ReleaseGroup.new, Model::ReleaseGroup.new]
|
|
16
21
|
@releases = [Model::Release.new, Model::Release.new]
|
|
17
22
|
@aliases = [Model::Alias.new, Model::Alias.new]
|
|
18
23
|
end
|
|
@@ -22,6 +27,9 @@ class TestArtist < Test::Unit::TestCase
|
|
|
22
27
|
|
|
23
28
|
# Include the tests for Entity
|
|
24
29
|
include TestEntity
|
|
30
|
+
include TestRateable
|
|
31
|
+
include TestRelateable
|
|
32
|
+
include TestTaggable
|
|
25
33
|
|
|
26
34
|
def test_new_artist
|
|
27
35
|
artist = nil
|
|
@@ -107,6 +115,20 @@ class TestArtist < Test::Unit::TestCase
|
|
|
107
115
|
assert_equal Model::IncompleteDate.new('1988-04-20'), artist.end_date
|
|
108
116
|
end
|
|
109
117
|
|
|
118
|
+
def test_add_and_remove_release_groups
|
|
119
|
+
artist = Model::Artist.new
|
|
120
|
+
assert_equal 0, artist.release_groups.size
|
|
121
|
+
assert_nothing_raised {artist.release_groups << @release_groups[0]}
|
|
122
|
+
assert_equal 1, artist.release_groups.size
|
|
123
|
+
assert_nothing_raised {artist.release_groups << @release_groups[1]}
|
|
124
|
+
assert_equal 2, artist.release_groups.size
|
|
125
|
+
|
|
126
|
+
assert_nothing_raised {artist.release_groups.delete @release_groups[1]}
|
|
127
|
+
assert_equal 1, artist.release_groups.size
|
|
128
|
+
assert_nothing_raised {artist.release_groups.delete @release_groups[0]}
|
|
129
|
+
assert_equal 0, artist.release_groups.size
|
|
130
|
+
end
|
|
131
|
+
|
|
110
132
|
# Many releases can be added
|
|
111
133
|
def test_add_and_remove_releases
|
|
112
134
|
artist = Model::Artist.new
|
data/test/test_artist_filter.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_artist_includes.rb 254 2009-05-13 20:04:36Z phw $
|
|
2
3
|
#
|
|
3
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
4
5
|
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
|
@@ -26,9 +27,13 @@ class TestArtistIncludes < Test::Unit::TestCase
|
|
|
26
27
|
:track_rels => true,
|
|
27
28
|
:label_rels => true,
|
|
28
29
|
:url_rels => true,
|
|
30
|
+
:release_groups => true,
|
|
29
31
|
:releases => [Model::Release::TYPE_ALBUM, 'Official'],
|
|
30
32
|
:va_releases => ['Album', Model::Release::TYPE_OFFICIAL],
|
|
31
|
-
:tags => true
|
|
33
|
+
:tags => true,
|
|
34
|
+
:user_tags => true,
|
|
35
|
+
:ratings => true,
|
|
36
|
+
:user_ratings => true
|
|
32
37
|
)
|
|
33
38
|
result_string = includes.to_s
|
|
34
39
|
assert_equal 'inc=', result_string[0..3]
|
|
@@ -40,6 +45,7 @@ class TestArtistIncludes < Test::Unit::TestCase
|
|
|
40
45
|
assert result_array.include?('track-rels')
|
|
41
46
|
assert result_array.include?('label-rels')
|
|
42
47
|
assert result_array.include?('url-rels')
|
|
48
|
+
assert result_array.include?('release-groups')
|
|
43
49
|
assert result_array.include?('sa-Album')
|
|
44
50
|
assert result_array.include?('sa-Official')
|
|
45
51
|
assert result_array.include?('va-Album')
|
|
@@ -55,9 +61,13 @@ class TestArtistIncludes < Test::Unit::TestCase
|
|
|
55
61
|
:track_rels => false,
|
|
56
62
|
:label_rels => false,
|
|
57
63
|
:url_rels => false,
|
|
64
|
+
:release_groups => false,
|
|
58
65
|
:releases => [],
|
|
59
66
|
:va_releases => [],
|
|
60
|
-
:tags => false
|
|
67
|
+
:tags => false,
|
|
68
|
+
:user_tags => false,
|
|
69
|
+
:ratings => false,
|
|
70
|
+
:user_ratings => false
|
|
61
71
|
)
|
|
62
72
|
assert_equal '', includes.to_s
|
|
63
73
|
|
data/test/test_collection.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_collection.rb 254 2009-05-13 20:04:36Z phw $
|
|
2
3
|
#
|
|
3
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
4
5
|
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
|
@@ -62,4 +63,4 @@ class TestCollection < Test::Unit::TestCase
|
|
|
62
63
|
assert_equal @artist_three, array[2]
|
|
63
64
|
end
|
|
64
65
|
|
|
65
|
-
end
|
|
66
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_default_factory.rb 273 2009-05-24 22:29:04Z phw $
|
|
2
3
|
#
|
|
3
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
4
5
|
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
|
@@ -30,6 +31,12 @@ class TestDefaultFactory < Test::Unit::TestCase
|
|
|
30
31
|
assert factory.new_entity(:label).is_a?(Model::Label)
|
|
31
32
|
end
|
|
32
33
|
|
|
34
|
+
def test_new_release_group
|
|
35
|
+
factory = Model::DefaultFactory.new
|
|
36
|
+
assert factory.new_release_group.is_a?(Model::ReleaseGroup)
|
|
37
|
+
assert factory.new_entity(Model::ReleaseGroup.entity_type).is_a?(Model::ReleaseGroup)
|
|
38
|
+
end
|
|
39
|
+
|
|
33
40
|
def test_new_release
|
|
34
41
|
factory = Model::DefaultFactory.new
|
|
35
42
|
assert factory.new_release.is_a?(Model::Release)
|
data/test/test_disc.rb
CHANGED
data/test/test_isrc.rb
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_isrc.rb 263 2009-05-24 22:15:12Z phw $
|
|
3
|
+
#
|
|
4
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
5
|
+
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
|
6
|
+
# License:: RBrainz is free software distributed under a BSD style license.
|
|
7
|
+
# See LICENSE[file:../LICENSE.html] for permissions.
|
|
8
|
+
|
|
9
|
+
require 'test/unit'
|
|
10
|
+
require 'rbrainz/model'
|
|
11
|
+
include MusicBrainz
|
|
12
|
+
|
|
13
|
+
# Unit test for the Tag model.
|
|
14
|
+
class TestISRC < Test::Unit::TestCase
|
|
15
|
+
|
|
16
|
+
def setup
|
|
17
|
+
@valid_raw_isrc = 'USPR37300012'
|
|
18
|
+
@valid_printable_isrc = 'US-PR3-73-00012'
|
|
19
|
+
@invalid_isrcs = ['', 'USPR37300012X', 'USPR3730001', 'ÜSPR37300012',
|
|
20
|
+
'USPR_7300012', 'USPR37300012-', '-USPR37300012']
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def teardown
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_parse_valid_raw_isrc
|
|
27
|
+
isrc = nil
|
|
28
|
+
assert_nothing_raised {isrc = Model::ISRC.parse(@valid_raw_isrc)}
|
|
29
|
+
assert_equal 'US', isrc.country
|
|
30
|
+
assert_equal 'PR3', isrc.registrant
|
|
31
|
+
assert_equal '73', isrc.year
|
|
32
|
+
assert_equal '00012', isrc.designation
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_parse_lowercase_raw_isrc
|
|
36
|
+
isrc = nil
|
|
37
|
+
assert_nothing_raised {isrc = Model::ISRC.parse(@valid_raw_isrc.downcase)}
|
|
38
|
+
assert_equal 'US', isrc.country
|
|
39
|
+
assert_equal 'PR3', isrc.registrant
|
|
40
|
+
assert_equal '73', isrc.year
|
|
41
|
+
assert_equal '00012', isrc.designation
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_parse_valid_printable_isrc
|
|
45
|
+
isrc = nil
|
|
46
|
+
assert_nothing_raised {isrc = Model::ISRC.parse(@valid_printable_isrc)}
|
|
47
|
+
assert_equal 'US', isrc.country
|
|
48
|
+
assert_equal 'PR3', isrc.registrant
|
|
49
|
+
assert_equal '73', isrc.year
|
|
50
|
+
assert_equal '00012', isrc.designation
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_parse_invalid_isrc
|
|
54
|
+
@invalid_isrcs.each do |isrc|
|
|
55
|
+
assert_raise(Model::InvalidISRCError) { Model::ISRC.parse(isrc) }
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_isrc_to_readable_string
|
|
60
|
+
isrc = Model::ISRC.parse(@valid_raw_isrc)
|
|
61
|
+
assert_equal @valid_printable_isrc, isrc.to_s
|
|
62
|
+
isrc = Model::ISRC.parse(@valid_raw_isrc.downcase)
|
|
63
|
+
assert_equal @valid_printable_isrc, isrc.to_s
|
|
64
|
+
isrc = Model::ISRC.parse(@valid_printable_isrc.downcase)
|
|
65
|
+
assert_equal @valid_printable_isrc, isrc.to_s
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_isrc_to_string
|
|
69
|
+
isrc = Model::ISRC.parse(@valid_raw_isrc)
|
|
70
|
+
assert_equal @valid_raw_isrc, isrc.to_str
|
|
71
|
+
isrc = Model::ISRC.parse(@valid_raw_isrc.downcase)
|
|
72
|
+
assert_equal @valid_raw_isrc, isrc.to_str
|
|
73
|
+
isrc = Model::ISRC.parse(@valid_printable_isrc.downcase)
|
|
74
|
+
assert_equal @valid_raw_isrc, isrc.to_str
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_isrc_equality
|
|
78
|
+
isrc1 = Model::ISRC.parse(@valid_raw_isrc)
|
|
79
|
+
isrc2 = Model::ISRC.parse(@valid_printable_isrc)
|
|
80
|
+
assert_equal isrc1, isrc2
|
|
81
|
+
assert_equal isrc1, @valid_raw_isrc
|
|
82
|
+
assert_equal isrc2, @valid_raw_isrc
|
|
83
|
+
assert_equal isrc1, @valid_printable_isrc
|
|
84
|
+
assert_equal isrc2, @valid_printable_isrc
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
data/test/test_label.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_label.rb 258 2009-05-17 17:43:58Z phw $
|
|
2
3
|
#
|
|
3
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
4
5
|
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
|
@@ -6,6 +7,9 @@
|
|
|
6
7
|
# See LICENSE[file:../LICENSE.html] for permissions.
|
|
7
8
|
|
|
8
9
|
require 'test_entity'
|
|
10
|
+
require 'test_rateable'
|
|
11
|
+
require 'test_relateable'
|
|
12
|
+
require 'test_taggable'
|
|
9
13
|
|
|
10
14
|
# Unit test for the Label model.
|
|
11
15
|
class TestLabel < Test::Unit::TestCase
|
|
@@ -22,6 +26,9 @@ class TestLabel < Test::Unit::TestCase
|
|
|
22
26
|
|
|
23
27
|
# Include the tests for Entity
|
|
24
28
|
include TestEntity
|
|
29
|
+
include TestRateable
|
|
30
|
+
include TestRelateable
|
|
31
|
+
include TestTaggable
|
|
25
32
|
|
|
26
33
|
def test_new_label
|
|
27
34
|
label = nil
|
data/test/test_label_filter.rb
CHANGED
data/test/test_label_includes.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_label_includes.rb 254 2009-05-13 20:04:36Z phw $
|
|
2
3
|
#
|
|
3
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
4
5
|
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
|
@@ -26,7 +27,10 @@ class TestLabelIncludes < Test::Unit::TestCase
|
|
|
26
27
|
:track_rels => true,
|
|
27
28
|
:label_rels => true,
|
|
28
29
|
:url_rels => true,
|
|
29
|
-
:tags => true
|
|
30
|
+
:tags => true,
|
|
31
|
+
:user_tags => true,
|
|
32
|
+
:ratings => true,
|
|
33
|
+
:user_ratings => true
|
|
30
34
|
)
|
|
31
35
|
result_string = includes.to_s
|
|
32
36
|
assert_equal 'inc=', result_string[0..3]
|
|
@@ -49,7 +53,10 @@ class TestLabelIncludes < Test::Unit::TestCase
|
|
|
49
53
|
:track_rels => false,
|
|
50
54
|
:label_rels => false,
|
|
51
55
|
:url_rels => false,
|
|
52
|
-
:tags => false
|
|
56
|
+
:tags => false,
|
|
57
|
+
:user_tags => false,
|
|
58
|
+
:ratings => false,
|
|
59
|
+
:user_ratings => false
|
|
53
60
|
)
|
|
54
61
|
assert_equal '', includes.to_s
|
|
55
62
|
|
data/test/test_mbid.rb
CHANGED
data/test/test_mbxml.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# $Id: test_mbxml.rb 279 2009-06-14 20:51:02Z phw $
|
|
2
3
|
#
|
|
3
4
|
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
|
4
5
|
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
|
@@ -81,6 +82,8 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
81
82
|
assert_equal '1840-05-07', artist.begin_date.to_s
|
|
82
83
|
assert_equal '1893-11-06', artist.end_date.to_s
|
|
83
84
|
assert_equal 80, artist.aliases.size
|
|
85
|
+
assert artist.rating.empty?
|
|
86
|
+
assert artist.user_rating.empty?
|
|
84
87
|
end
|
|
85
88
|
|
|
86
89
|
def test_artist_tchaikovsky_2
|
|
@@ -99,6 +102,11 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
99
102
|
assert_equal 40, artist.tags[2].count
|
|
100
103
|
assert_equal 'composer', artist.tags[3].text
|
|
101
104
|
assert_equal 120, artist.tags[3].count
|
|
105
|
+
assert_equal false, artist.rating.empty?
|
|
106
|
+
assert_equal 4.5, artist.rating.value
|
|
107
|
+
assert_equal 10, artist.rating.count
|
|
108
|
+
assert_equal false, artist.user_rating.empty?
|
|
109
|
+
assert_equal 3, artist.user_rating.value
|
|
102
110
|
end
|
|
103
111
|
|
|
104
112
|
def test_artist_tori_amos_1
|
|
@@ -194,6 +202,31 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
194
202
|
assert artist.releases[0].types.include?(Model::Release::TYPE_OFFICIAL)
|
|
195
203
|
end
|
|
196
204
|
|
|
205
|
+
def test_release_group_the_cure_1
|
|
206
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release-group/The_Cure_1.xml')
|
|
207
|
+
release_group = mbxml.get_entity(:release_group)
|
|
208
|
+
|
|
209
|
+
assert_equal 'c6a62b78-70f7-44f7-b159-064f6b7ba03a', release_group.id.uuid
|
|
210
|
+
assert_equal 1, release_group.types.size
|
|
211
|
+
assert release_group.types.include?(Model::ReleaseGroup::TYPE_ALBUM)
|
|
212
|
+
assert_equal 'The Cure', release_group.title
|
|
213
|
+
|
|
214
|
+
assert_equal 4, release_group.releases.size
|
|
215
|
+
assert_equal 'd984e1a3-7281-46bb-ad8b-1478a00f2fbf', release_group.releases[0].id.uuid
|
|
216
|
+
assert_equal 'The Cure', release_group.releases[0].title
|
|
217
|
+
assert_equal 'ENG', release_group.releases[0].text_language
|
|
218
|
+
assert_equal 'Latn', release_group.releases[0].text_script
|
|
219
|
+
assert release_group.releases[0].types.include?(Model::Release::TYPE_ALBUM)
|
|
220
|
+
assert release_group.releases[0].types.include?(Model::Release::TYPE_OFFICIAL)
|
|
221
|
+
assert_equal 'B0002CHGZI', release_group.releases[0].asin
|
|
222
|
+
assert_equal 'c100a398-3132-48a8-a5fc-c3e908ac17dc', release_group.releases[1].id.uuid
|
|
223
|
+
assert_equal '24bec892-b21d-47d8-a288-dc6450152574', release_group.releases[2].id.uuid
|
|
224
|
+
assert_equal '61a4ec51-fa34-4757-85d7-83231776ed14', release_group.releases[3].id.uuid
|
|
225
|
+
|
|
226
|
+
assert_equal '69ee3720-a7cb-4402-b48d-a02c366f2bcf', release_group.artist.id.uuid
|
|
227
|
+
assert_equal 'The Cure', release_group.artist.name
|
|
228
|
+
end
|
|
229
|
+
|
|
197
230
|
def test_release_search
|
|
198
231
|
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/search_result_1.xml')
|
|
199
232
|
assert_equal nil, mbxml.get_entity(:artist)
|
|
@@ -247,6 +280,8 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
247
280
|
assert_equal Model::NS_REL_1 + 'AmazonAsin', url_rels[1].type
|
|
248
281
|
assert_equal Model::Relation::DIR_BOTH, url_rels[1].direction
|
|
249
282
|
assert_equal 'http://www.amazon.com/gp/product/B0000024SI', url_rels[1].target
|
|
283
|
+
assert release.rating.empty?
|
|
284
|
+
assert release.user_rating.empty?
|
|
250
285
|
end
|
|
251
286
|
|
|
252
287
|
def test_release_highway_61_revisited_2
|
|
@@ -266,6 +301,11 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
266
301
|
assert_equal 40, release.tags[2].count
|
|
267
302
|
assert_equal 'dylan', release.tags[3].text
|
|
268
303
|
assert_equal 4, release.tags[3].count
|
|
304
|
+
assert_equal false, release.rating.empty?
|
|
305
|
+
assert_equal 4.5, release.rating.value
|
|
306
|
+
assert_equal 10, release.rating.count
|
|
307
|
+
assert_equal false, release.user_rating.empty?
|
|
308
|
+
assert_equal 3, release.user_rating.value
|
|
269
309
|
end
|
|
270
310
|
|
|
271
311
|
def test_release_little_earthquakes_1
|
|
@@ -414,6 +454,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
414
454
|
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
|
415
455
|
assert_equal 'Silent All These Years', track.title
|
|
416
456
|
assert_equal 253466, track.duration
|
|
457
|
+
assert track.isrcs.empty?
|
|
417
458
|
end
|
|
418
459
|
|
|
419
460
|
def test_track_silent_all_these_years_2
|
|
@@ -431,6 +472,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
431
472
|
assert_equal Model::Relation::DIR_BACKWARD, track_rels[0].direction
|
|
432
473
|
assert track_rels[0].target.is_a?(Model::Track)
|
|
433
474
|
assert_equal '5bcd4eaa-fae7-465f-9f03-d005b959ed02', track_rels[0].target.artist.id.uuid
|
|
475
|
+
assert track.isrcs.empty?
|
|
434
476
|
end
|
|
435
477
|
|
|
436
478
|
def test_track_silent_all_these_years_3
|
|
@@ -443,6 +485,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
443
485
|
assert_equal 7, track.puids.size
|
|
444
486
|
assert_equal 'c2a2cee5-a8ca-4f89-a092-c3e1e65ab7e6', track.puids[0]
|
|
445
487
|
assert_equal '42ab76ea-5d42-4259-85d7-e7f2c69e4485', track.puids[6]
|
|
488
|
+
assert track.isrcs.empty?
|
|
446
489
|
end
|
|
447
490
|
|
|
448
491
|
def test_track_silent_all_these_years_4
|
|
@@ -458,6 +501,8 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
458
501
|
assert_equal 7, track.puids.size
|
|
459
502
|
assert_equal 'c2a2cee5-a8ca-4f89-a092-c3e1e65ab7e6', track.puids[0]
|
|
460
503
|
assert_equal '42ab76ea-5d42-4259-85d7-e7f2c69e4485', track.puids[6]
|
|
504
|
+
assert_equal 1, track.isrcs.size
|
|
505
|
+
assert_equal 'USPR37300012', track.isrcs[0]
|
|
461
506
|
end
|
|
462
507
|
|
|
463
508
|
# This test is similiar to silent_all_these_years_3, but it includes an
|
|
@@ -472,6 +517,9 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
472
517
|
assert_equal 7, track.puids.size
|
|
473
518
|
assert_equal 'c2a2cee5-a8ca-4f89-a092-c3e1e65ab7e6', track.puids[0]
|
|
474
519
|
assert_equal '42ab76ea-5d42-4259-85d7-e7f2c69e4485', track.puids[6]
|
|
520
|
+
assert track.rating.empty?
|
|
521
|
+
assert track.user_rating.empty?
|
|
522
|
+
assert track.isrcs.empty?
|
|
475
523
|
end
|
|
476
524
|
|
|
477
525
|
def test_track_silent_all_these_years_6
|
|
@@ -482,6 +530,14 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
482
530
|
assert_equal 'Silent All These Years', track.title
|
|
483
531
|
assert_equal 253466, track.duration
|
|
484
532
|
assert_equal 0, track.tags.size
|
|
533
|
+
assert_equal false, track.rating.empty?
|
|
534
|
+
assert_equal 4.5, track.rating.value
|
|
535
|
+
assert_equal 10, track.rating.count
|
|
536
|
+
assert_equal false, track.user_rating.empty?
|
|
537
|
+
assert_equal 3, track.user_rating.value
|
|
538
|
+
assert_equal 1, track.isrcs.size
|
|
539
|
+
assert_equal Model::ISRC.new("USPR37300012"), track.isrcs[0]
|
|
540
|
+
assert track.isrcs[0].is_a?(Model::ISRC)
|
|
485
541
|
end
|
|
486
542
|
|
|
487
543
|
def test_label_search
|
|
@@ -534,6 +590,8 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
534
590
|
assert_equal '2047', label.end_date.to_s
|
|
535
591
|
assert_equal 1, label.aliases.size
|
|
536
592
|
assert_equal 'Atlantic Rec.', label.aliases[0].name
|
|
593
|
+
assert label.rating.empty?
|
|
594
|
+
assert label.user_rating.empty?
|
|
537
595
|
end
|
|
538
596
|
|
|
539
597
|
def test_label_atlantic_records_3
|
|
@@ -547,6 +605,11 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
547
605
|
assert_equal 'american', label.tags[0].text
|
|
548
606
|
assert_equal 'jazz', label.tags[1].text
|
|
549
607
|
assert_equal 'blues', label.tags[2].text
|
|
608
|
+
assert_equal false, label.rating.empty?
|
|
609
|
+
assert_equal 4.5, label.rating.value
|
|
610
|
+
assert_equal 10, label.rating.count
|
|
611
|
+
assert_equal false, label.user_rating.empty?
|
|
612
|
+
assert_equal 3, label.user_rating.value
|
|
550
613
|
end
|
|
551
614
|
|
|
552
615
|
def test_user_1
|
|
@@ -561,7 +624,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
561
624
|
assert_equal Model::NS_EXT_1 + 'RelationshipEditor', users[0].types[1]
|
|
562
625
|
end
|
|
563
626
|
|
|
564
|
-
def
|
|
627
|
+
def test_artist_with_factory
|
|
565
628
|
factory = MyFactory.new
|
|
566
629
|
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tori_Amos_2.xml'), factory
|
|
567
630
|
artist = mbxml.get_entity(:artist)
|
|
@@ -571,4 +634,32 @@ class TestMBXML < Test::Unit::TestCase
|
|
|
571
634
|
end
|
|
572
635
|
end
|
|
573
636
|
|
|
637
|
+
def test_release_group_with_factory
|
|
638
|
+
factory = MyFactory.new
|
|
639
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release-group/The_Cure_1.xml'), factory
|
|
640
|
+
release_group = mbxml.get_entity(:release_group)
|
|
641
|
+
assert release_group.is_a?(MyReleaseGroup)
|
|
642
|
+
end
|
|
643
|
+
|
|
644
|
+
def test_release_with_factory
|
|
645
|
+
factory = MyFactory.new
|
|
646
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Highway_61_Revisited_1.xml'), factory
|
|
647
|
+
release = mbxml.get_entity(:release)
|
|
648
|
+
assert release.is_a?(MyRelease)
|
|
649
|
+
end
|
|
650
|
+
|
|
651
|
+
def test_label_with_factory
|
|
652
|
+
factory = MyFactory.new
|
|
653
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'label/Atlantic_Records_1.xml'), factory
|
|
654
|
+
label = mbxml.get_entity(:label)
|
|
655
|
+
assert label.is_a?(MyLabel)
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
def test_track_with_factory
|
|
659
|
+
factory = MyFactory.new
|
|
660
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/Silent_All_These_Years_1.xml'), factory
|
|
661
|
+
track = mbxml.get_entity(:track)
|
|
662
|
+
assert track.is_a?(MyTrack)
|
|
663
|
+
end
|
|
664
|
+
|
|
574
665
|
end
|