rbrainz 0.4.2 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|