rbrainz 0.1.1 → 0.2.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 +31 -0
- data/LICENSE +1 -1
- data/README +3 -2
- data/Rakefile +40 -22
- data/TODO +6 -23
- data/doc/README.rdoc +50 -21
- data/examples/getartist.rb +6 -4
- data/examples/getuser.rb +30 -0
- data/examples/searchartists.rb +35 -0
- data/lib/rbrainz.rb +12 -7
- data/lib/rbrainz/core_ext.rb +8 -0
- data/lib/rbrainz/core_ext/mbid.rb +30 -0
- data/lib/rbrainz/core_ext/net_http_digest.rb +52 -0
- data/lib/rbrainz/core_ext/range.rb +28 -0
- data/lib/rbrainz/core_ext/range/equality.rb +232 -0
- data/lib/rbrainz/data/countrynames.rb +7 -5
- data/lib/rbrainz/data/languagenames.rb +8 -5
- data/lib/rbrainz/data/releasetypenames.rb +34 -0
- data/lib/rbrainz/data/scriptnames.rb +8 -5
- data/lib/rbrainz/model.rb +27 -35
- data/lib/rbrainz/model/alias.rb +31 -7
- data/lib/rbrainz/model/artist.rb +30 -41
- data/lib/rbrainz/model/collection.rb +102 -0
- data/lib/rbrainz/model/default_factory.rb +78 -0
- data/lib/rbrainz/model/disc.rb +45 -8
- data/lib/rbrainz/model/entity.rb +122 -53
- data/lib/rbrainz/model/incomplete_date.rb +31 -47
- data/lib/rbrainz/model/individual.rb +103 -0
- data/lib/rbrainz/model/label.rb +42 -33
- data/lib/rbrainz/model/mbid.rb +111 -40
- data/lib/rbrainz/model/relation.rb +78 -14
- data/lib/rbrainz/model/release.rb +119 -31
- data/lib/rbrainz/model/release_event.rb +38 -9
- data/lib/rbrainz/model/scored_collection.rb +99 -0
- data/lib/rbrainz/model/tag.rb +39 -0
- data/lib/rbrainz/model/track.rb +37 -13
- data/lib/rbrainz/model/user.rb +48 -0
- data/lib/rbrainz/utils.rb +9 -0
- data/lib/rbrainz/utils/data.rb +78 -0
- data/lib/rbrainz/utils/helper.rb +22 -0
- data/lib/rbrainz/version.rb +15 -0
- data/lib/rbrainz/webservice.rb +32 -6
- data/lib/rbrainz/webservice/filter.rb +124 -47
- data/lib/rbrainz/webservice/includes.rb +49 -10
- data/lib/rbrainz/webservice/mbxml.rb +228 -173
- data/lib/rbrainz/webservice/query.rb +312 -25
- data/lib/rbrainz/webservice/webservice.rb +164 -27
- data/test/lib/mock_webservice.rb +53 -0
- data/test/lib/test_entity.rb +27 -8
- data/test/lib/test_factory.rb +47 -0
- data/test/lib/testing_helper.rb +7 -5
- data/test/test-data/invalid/artist/tags_1.xml +6 -0
- data/test/test-data/valid/artist/Tchaikovsky-2.xml +12 -0
- data/test/test-data/valid/label/Atlantic_Records_2.xml +3 -0
- data/test/test-data/valid/label/Atlantic_Records_3.xml +11 -0
- data/test/test-data/valid/release/Highway_61_Revisited_2.xml +12 -0
- data/test/test-data/valid/track/Silent_All_These_Years_6.xml +8 -0
- data/test/test_alias.rb +13 -7
- data/test/test_artist.rb +26 -4
- data/test/test_artist_filter.rb +11 -6
- data/test/test_artist_includes.rb +11 -6
- data/test/test_collection.rb +66 -0
- data/test/test_default_factory.rb +75 -0
- data/test/test_disc.rb +9 -4
- data/test/test_incomplete_date.rb +21 -14
- data/test/test_label.rb +56 -18
- data/test/test_label_filter.rb +10 -5
- data/test/test_label_includes.rb +11 -6
- data/test/test_mbid.rb +34 -19
- data/test/test_mbxml.rb +242 -72
- data/test/test_query.rb +92 -7
- data/test/test_range_equality.rb +144 -0
- data/test/test_relation.rb +18 -7
- data/test/test_release.rb +15 -4
- data/test/test_release_event.rb +16 -4
- data/test/test_release_filter.rb +11 -5
- data/test/test_release_includes.rb +11 -6
- data/test/test_scored_collection.rb +86 -0
- data/test/test_tag.rb +39 -0
- data/test/test_track.rb +15 -4
- data/test/test_track_filter.rb +11 -5
- data/test/test_track_includes.rb +11 -6
- data/test/test_utils.rb +41 -0
- data/test/test_webservice.rb +16 -17
- metadata +93 -57
data/test/test_mbxml.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
-
# $Id: test_mbxml.rb
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# $Id: test_mbxml.rb 146 2007-07-19 16:33:38Z phw $
|
2
|
+
#
|
3
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
|
+
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
5
|
+
# License:: RBrainz is free software distributed under a BSD style license.
|
6
|
+
# See LICENSE[file:../LICENSE.html] for permissions.
|
5
7
|
|
6
8
|
require 'test/unit'
|
7
9
|
require 'rbrainz'
|
10
|
+
require 'test_factory'
|
8
11
|
include MusicBrainz
|
9
12
|
|
10
13
|
# Unit test for the MBXML class.
|
@@ -23,46 +26,52 @@ class TestMBXML < Test::Unit::TestCase
|
|
23
26
|
|
24
27
|
def test_empty
|
25
28
|
# The first test result is completely empty
|
26
|
-
mbxml = Webservice::MBXML.new
|
29
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/empty_1.xml')
|
27
30
|
assert_equal nil, mbxml.get_entity(:artist)
|
28
31
|
assert_equal nil, mbxml.get_entity(:release)
|
29
32
|
assert_equal nil, mbxml.get_entity(:track)
|
30
33
|
assert_equal nil, mbxml.get_entity(:label)
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
assert_raise(Webservice::MBXML::ParseError) { mbxml.get_entity_list(:artist) }
|
35
|
+
assert_raise(Webservice::MBXML::ParseError) { mbxml.get_entity_list(:release) }
|
36
|
+
assert_raise(Webservice::MBXML::ParseError) { mbxml.get_entity_list(:track) }
|
37
|
+
assert_raise(Webservice::MBXML::ParseError) { mbxml.get_entity_list(:label) }
|
35
38
|
|
36
39
|
# The second contains an empty artist list
|
37
|
-
mbxml = Webservice::MBXML.new
|
40
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/empty_2.xml')
|
38
41
|
assert_equal nil, mbxml.get_entity(:artist)
|
39
42
|
assert_equal nil, mbxml.get_entity(:release)
|
40
43
|
assert_equal nil, mbxml.get_entity(:track)
|
41
44
|
assert_equal nil, mbxml.get_entity(:label)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
45
|
+
assert mbxml.get_entity_list(:artist).empty?
|
46
|
+
assert_raise(Webservice::MBXML::ParseError) { mbxml.get_entity_list(:release) }
|
47
|
+
assert_raise(Webservice::MBXML::ParseError) { mbxml.get_entity_list(:track) }
|
48
|
+
assert_raise(Webservice::MBXML::ParseError) { mbxml.get_entity_list(:label) }
|
46
49
|
end
|
47
50
|
|
48
51
|
def test_artist_search
|
49
|
-
mbxml = Webservice::MBXML.new
|
52
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/search_result_1.xml')
|
50
53
|
assert_equal nil, mbxml.get_entity(:artist)
|
51
54
|
assert_equal nil, mbxml.get_entity(:release)
|
52
55
|
assert_equal nil, mbxml.get_entity(:track)
|
53
56
|
assert_equal nil, mbxml.get_entity(:label)
|
54
57
|
|
55
58
|
artist_list = mbxml.get_entity_list(:artist)
|
59
|
+
assert_equal 0, artist_list.offset
|
60
|
+
assert_equal 47, artist_list.count
|
61
|
+
|
56
62
|
assert_equal 3, artist_list.size, artist_list.inspect
|
57
|
-
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist_list[0].id.uuid
|
58
|
-
assert_equal Model::Artist::TYPE_PERSON, artist_list[0].type
|
59
|
-
assert_equal 'Tori Amos', artist_list[0].name
|
60
|
-
assert_equal 'Amos, Tori', artist_list[0].sort_name
|
61
|
-
assert_equal '1963-08-22', artist_list[0].begin_date.to_s
|
63
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist_list[0].entity.id.uuid
|
64
|
+
assert_equal Model::Artist::TYPE_PERSON, artist_list[0].entity.type
|
65
|
+
assert_equal 'Tori Amos', artist_list[0].entity.name
|
66
|
+
assert_equal 'Amos, Tori', artist_list[0].entity.sort_name
|
67
|
+
assert_equal '1963-08-22', artist_list[0].entity.begin_date.to_s
|
68
|
+
assert_equal 100, artist_list[0].score
|
69
|
+
assert_equal 44, artist_list[1].score
|
70
|
+
assert_equal 44, artist_list[2].score
|
62
71
|
end
|
63
72
|
|
64
73
|
def test_artist_tchaikovsky_1
|
65
|
-
mbxml = Webservice::MBXML.new
|
74
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tchaikovsky-1.xml')
|
66
75
|
artist = mbxml.get_entity(:artist)
|
67
76
|
|
68
77
|
assert_equal '9ddd7abc-9e1b-471d-8031-583bc6bc8be9', artist.id.uuid
|
@@ -74,8 +83,26 @@ class TestMBXML < Test::Unit::TestCase
|
|
74
83
|
assert_equal 80, artist.aliases.size
|
75
84
|
end
|
76
85
|
|
86
|
+
def test_artist_tchaikovsky_2
|
87
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tchaikovsky-2.xml')
|
88
|
+
artist = mbxml.get_entity(:artist)
|
89
|
+
|
90
|
+
assert_equal '9ddd7abc-9e1b-471d-8031-583bc6bc8be9', artist.id.uuid
|
91
|
+
assert_equal Model::Artist::TYPE_PERSON, artist.type
|
92
|
+
assert_equal 'Пётр Ильич Чайковский', artist.name
|
93
|
+
assert_equal 4, artist.tags.size
|
94
|
+
assert_equal 'classical', artist.tags[0].text
|
95
|
+
assert_equal 100, artist.tags[0].count
|
96
|
+
assert_equal 'russian', artist.tags[1].text
|
97
|
+
assert_equal 60, artist.tags[1].count
|
98
|
+
assert_equal 'romantic era', artist.tags[2].text
|
99
|
+
assert_equal 40, artist.tags[2].count
|
100
|
+
assert_equal 'composer', artist.tags[3].text
|
101
|
+
assert_equal 120, artist.tags[3].count
|
102
|
+
end
|
103
|
+
|
77
104
|
def test_artist_tori_amos_1
|
78
|
-
mbxml = Webservice::MBXML.new
|
105
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tori_Amos_1.xml')
|
79
106
|
artist = mbxml.get_entity(:artist)
|
80
107
|
|
81
108
|
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
@@ -86,7 +113,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
86
113
|
end
|
87
114
|
|
88
115
|
def test_artist_tori_amos_2
|
89
|
-
mbxml = Webservice::MBXML.new
|
116
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tori_Amos_2.xml')
|
90
117
|
artist = mbxml.get_entity(:artist)
|
91
118
|
|
92
119
|
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
@@ -97,14 +124,17 @@ class TestMBXML < Test::Unit::TestCase
|
|
97
124
|
assert_equal 3, artist.releases.size
|
98
125
|
assert_equal 'a7ccb022-f437-4492-8eee-8f85d85cdb96', artist.releases[0].id.uuid
|
99
126
|
assert_equal artist, artist.releases[0].artist
|
127
|
+
assert_equal 3, artist.releases[0].discs.count
|
100
128
|
assert_equal '9cbf7040-dbdc-403c-940f-7562d9712514', artist.releases[1].id.uuid
|
101
129
|
assert_equal artist, artist.releases[1].artist
|
130
|
+
assert_equal 2, artist.releases[1].discs.count
|
102
131
|
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', artist.releases[2].id.uuid
|
103
132
|
assert_equal artist, artist.releases[2].artist
|
133
|
+
assert_equal 4, artist.releases[2].discs.count
|
104
134
|
end
|
105
135
|
|
106
136
|
def test_artist_tori_amos_3
|
107
|
-
mbxml = Webservice::MBXML.new
|
137
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tori_Amos_3.xml')
|
108
138
|
artist = mbxml.get_entity(:artist)
|
109
139
|
|
110
140
|
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
@@ -129,7 +159,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
129
159
|
end
|
130
160
|
|
131
161
|
def test_artist_tori_amos_4
|
132
|
-
mbxml = Webservice::MBXML.new
|
162
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tori_Amos_4.xml')
|
133
163
|
artist = mbxml.get_entity(:artist)
|
134
164
|
|
135
165
|
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
@@ -143,11 +173,11 @@ class TestMBXML < Test::Unit::TestCase
|
|
143
173
|
assert_equal 'Myra Amos', artist.aliases[1].name
|
144
174
|
assert_equal 'Torie Amos', artist.aliases[2].name
|
145
175
|
assert_equal 'Latn', artist.aliases[2].script
|
146
|
-
assert_equal 'Misspelling', artist.aliases[2].type
|
176
|
+
assert_equal Model::NS_MMD_1 + 'Misspelling', artist.aliases[2].type
|
147
177
|
end
|
148
178
|
|
149
179
|
def test_artist_tori_amos_5
|
150
|
-
mbxml = Webservice::MBXML.new
|
180
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tori_Amos_5.xml')
|
151
181
|
artist = mbxml.get_entity(:artist)
|
152
182
|
|
153
183
|
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
@@ -158,37 +188,88 @@ class TestMBXML < Test::Unit::TestCase
|
|
158
188
|
assert_equal 1, artist.releases.size
|
159
189
|
assert_equal 'a7ccb022-f437-4492-8eee-8f85d85cdb96', artist.releases[0].id.uuid
|
160
190
|
assert_equal 'Strange Little Girls', artist.releases[0].title
|
191
|
+
assert_equal 6, artist.releases.offset
|
192
|
+
assert_equal 9, artist.releases.count
|
161
193
|
assert artist.releases[0].types.include?(Model::Release::TYPE_ALBUM)
|
162
194
|
assert artist.releases[0].types.include?(Model::Release::TYPE_OFFICIAL)
|
163
195
|
end
|
164
196
|
|
165
197
|
def test_release_search
|
166
|
-
mbxml = Webservice::MBXML.new
|
198
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/search_result_1.xml')
|
167
199
|
assert_equal nil, mbxml.get_entity(:artist)
|
168
200
|
assert_equal nil, mbxml.get_entity(:release)
|
169
201
|
assert_equal nil, mbxml.get_entity(:track)
|
170
202
|
assert_equal nil, mbxml.get_entity(:label)
|
171
203
|
|
172
204
|
release_list = mbxml.get_entity_list(:release)
|
205
|
+
assert_equal 0, release_list.offset
|
206
|
+
assert_equal 234, release_list.count
|
207
|
+
|
173
208
|
assert_equal 2, release_list.size, release_list.inspect
|
174
|
-
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', release_list[0].id.uuid
|
175
|
-
assert release_list[0].types.include?(Model::Release::TYPE_ALBUM)
|
176
|
-
assert release_list[0].types.include?(Model::Release::TYPE_OFFICIAL)
|
177
|
-
assert_equal 'Under the Pink', release_list[0].title
|
178
|
-
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release_list[0].artist.id.uuid
|
179
|
-
assert_equal 1, release_list[0].release_events.size
|
180
|
-
assert_equal Model::IncompleteDate.new('1994-01-28'), release_list[0].release_events[0].date
|
209
|
+
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', release_list[0].entity.id.uuid
|
210
|
+
assert release_list[0].entity.types.include?(Model::Release::TYPE_ALBUM)
|
211
|
+
assert release_list[0].entity.types.include?(Model::Release::TYPE_OFFICIAL)
|
212
|
+
assert_equal 'Under the Pink', release_list[0].entity.title
|
213
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release_list[0].entity.artist.id.uuid
|
214
|
+
assert_equal 1, release_list[0].entity.release_events.size
|
215
|
+
assert_equal Model::IncompleteDate.new('1994-01-28'), release_list[0].entity.release_events[0].date
|
216
|
+
assert_equal 100, release_list[0].score
|
217
|
+
assert_equal 80, release_list[1].score
|
181
218
|
end
|
182
219
|
|
183
220
|
def test_release_highway_61_revisited_1
|
184
|
-
mbxml = Webservice::MBXML.new
|
221
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Highway_61_Revisited_1.xml')
|
185
222
|
release = mbxml.get_entity(:release)
|
186
223
|
|
187
|
-
|
224
|
+
assert_equal 'd61a2bd9-81ac-4023-bd22-1c884d4a176c', release.id.uuid
|
225
|
+
assert release.types.include?(Model::Release::TYPE_ALBUM)
|
226
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
227
|
+
assert_equal 'Highway 61 Revisited', release.title
|
228
|
+
assert_equal 'ENG', release.text_language
|
229
|
+
assert_equal 'Latn', release.text_script
|
230
|
+
assert_equal 'B0000C8AVR', release.asin
|
231
|
+
assert_equal '72c536dc-7137-4477-a521-567eeb840fa8', release.artist.id.uuid
|
232
|
+
assert_equal 2, release.release_events.size
|
233
|
+
assert_equal Model::IncompleteDate.new('1965-08-30'), release.release_events[0].date
|
234
|
+
assert_equal 'US', release.release_events[0].country
|
235
|
+
assert_equal 6, release.discs.size
|
236
|
+
assert_equal 'PNd4XY_ixr5GwjOGBwG2ssR94q8-', release.discs[5].id
|
237
|
+
#assert_equal 75, release.puids.count
|
238
|
+
assert_equal 9, release.tracks.size
|
239
|
+
assert_equal '430aa3d3-3dac-4bd5-857d-eb10212ffefb', release.tracks[0].id.uuid
|
240
|
+
assert_equal 'd315625a-3976-41b4-b2e0-43336b0f67bc', release.tracks[8].id.uuid
|
241
|
+
|
242
|
+
url_rels = release.get_relations(:target_type => Model::Relation::TO_URL)
|
243
|
+
assert_equal 2, url_rels.size, release.get_relations.inspect
|
244
|
+
assert_equal Model::NS_REL_1 + 'Wikipedia', url_rels[0].type
|
245
|
+
assert_equal nil, url_rels[0].direction
|
246
|
+
assert_equal 'http://en.wikipedia.org/wiki/Highway_61_Revisited', url_rels[0].target
|
247
|
+
assert_equal Model::NS_REL_1 + 'AmazonAsin', url_rels[1].type
|
248
|
+
assert_equal nil, url_rels[1].direction
|
249
|
+
assert_equal 'http://www.amazon.com/gp/product/B0000024SI', url_rels[1].target
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_release_highway_61_revisited_2
|
253
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Highway_61_Revisited_2.xml')
|
254
|
+
release = mbxml.get_entity(:release)
|
255
|
+
|
256
|
+
assert_equal 'd61a2bd9-81ac-4023-bd22-1c884d4a176c', release.id.uuid
|
257
|
+
assert release.types.include?(Model::Release::TYPE_ALBUM)
|
258
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
259
|
+
assert_equal 'Highway 61 Revisited', release.title
|
260
|
+
assert_equal 4, release.tags.size
|
261
|
+
assert_equal 'rock', release.tags[0].text
|
262
|
+
assert_equal 100, release.tags[0].count
|
263
|
+
assert_equal 'blues rock', release.tags[1].text
|
264
|
+
assert_equal 40, release.tags[1].count
|
265
|
+
assert_equal 'folk rock', release.tags[2].text
|
266
|
+
assert_equal 40, release.tags[2].count
|
267
|
+
assert_equal 'dylan', release.tags[3].text
|
268
|
+
assert_equal 4, release.tags[3].count
|
188
269
|
end
|
189
270
|
|
190
271
|
def test_release_little_earthquakes_1
|
191
|
-
mbxml = Webservice::MBXML.new
|
272
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Little_Earthquakes_1.xml')
|
192
273
|
release = mbxml.get_entity(:release)
|
193
274
|
|
194
275
|
assert_equal '02232360-337e-4a3f-ad20-6cdd4c34288c', release.id.uuid
|
@@ -207,7 +288,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
207
288
|
end
|
208
289
|
|
209
290
|
def test_release_little_earthquakes_2
|
210
|
-
mbxml = Webservice::MBXML.new
|
291
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Little_Earthquakes_2.xml')
|
211
292
|
release = mbxml.get_entity(:release)
|
212
293
|
|
213
294
|
assert_equal '02232360-337e-4a3f-ad20-6cdd4c34288c', release.id.uuid
|
@@ -231,7 +312,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
231
312
|
|
232
313
|
# This is a various artist release.
|
233
314
|
def test_release_mission_impossible_2
|
234
|
-
mbxml = Webservice::MBXML.new
|
315
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Mission_Impossible_2.xml')
|
235
316
|
release = mbxml.get_entity(:release)
|
236
317
|
|
237
318
|
assert_equal '81683d13-e014-4d35-9774-6f536f4ef557', release.id.uuid
|
@@ -251,45 +332,82 @@ class TestMBXML < Test::Unit::TestCase
|
|
251
332
|
end
|
252
333
|
|
253
334
|
def test_release_under_the_pink_1
|
254
|
-
mbxml = Webservice::MBXML.new
|
335
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Under_the_Pink_1.xml')
|
255
336
|
release = mbxml.get_entity(:release)
|
256
337
|
|
257
|
-
|
338
|
+
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', release.id.uuid
|
339
|
+
assert release.types.include?(Model::Release::TYPE_ALBUM)
|
340
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
341
|
+
assert_equal 'Under the Pink', release.title
|
342
|
+
assert_equal 'ENG', release.text_language
|
343
|
+
assert_equal 'Latn', release.text_script
|
344
|
+
assert_equal 'B000002IXU', release.asin
|
345
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release.artist.id.uuid
|
346
|
+
assert_equal 'Tori Amos', release.artist.name
|
347
|
+
assert_equal 1, release.release_events.size
|
348
|
+
assert_equal Model::IncompleteDate.new('1994-01-28'), release.release_events[0].date
|
349
|
+
assert_equal 4, release.discs.count
|
350
|
+
assert_equal 12, release.tracks.count
|
258
351
|
end
|
259
352
|
|
260
353
|
def test_release_under_the_pink_2
|
261
|
-
mbxml = Webservice::MBXML.new
|
354
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Under_the_Pink_2.xml')
|
262
355
|
release = mbxml.get_entity(:release)
|
263
356
|
|
264
|
-
|
357
|
+
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', release.id.uuid
|
358
|
+
assert release.types.include?(Model::Release::TYPE_ALBUM)
|
359
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
360
|
+
assert_equal 'Under the Pink', release.title
|
361
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release.artist.id.uuid
|
362
|
+
assert_equal 'Tori Amos', release.artist.name
|
363
|
+
assert_equal 1, release.tracks.size
|
364
|
+
assert_equal '0a984e3b-e38a-4b86-80be-f3a3eb1114ca', release.tracks[0].id.uuid
|
365
|
+
assert_equal 'God', release.tracks[0].title
|
265
366
|
end
|
266
367
|
|
267
368
|
def test_release_under_the_pink_3
|
268
|
-
mbxml = Webservice::MBXML.new
|
369
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'release/Under_the_Pink_3.xml')
|
269
370
|
release = mbxml.get_entity(:release)
|
270
371
|
|
271
|
-
|
372
|
+
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', release.id.uuid
|
373
|
+
assert release.types.include?(Model::Release::TYPE_ALBUM)
|
374
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
375
|
+
assert_equal 'Under the Pink', release.title
|
376
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release.artist.id.uuid
|
377
|
+
assert_equal 'Tori Amos', release.artist.name
|
378
|
+
assert_equal 1, release.release_events.size
|
379
|
+
assert_equal Model::IncompleteDate.new('1994-01-31'), release.release_events[0].date
|
380
|
+
assert_equal '82567-2', release.release_events[0].catalog_number
|
381
|
+
assert_equal '07567825672', release.release_events[0].barcode
|
382
|
+
assert_equal '50c384a2-0b44-401b-b893-8181173339c7', release.release_events[0].label.id.uuid
|
383
|
+
assert_equal 'Atlantic Records', release.release_events[0].label.name
|
272
384
|
end
|
273
385
|
|
274
386
|
def test_track_search
|
275
|
-
mbxml = Webservice::MBXML.new
|
387
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/search_result_1.xml')
|
276
388
|
assert_equal nil, mbxml.get_entity(:artist)
|
277
389
|
assert_equal nil, mbxml.get_entity(:release)
|
278
390
|
assert_equal nil, mbxml.get_entity(:track)
|
279
391
|
assert_equal nil, mbxml.get_entity(:label)
|
280
392
|
|
281
393
|
track_list = mbxml.get_entity_list(:track)
|
394
|
+
assert_equal 7, track_list.offset
|
395
|
+
assert_equal 100, track_list.count
|
396
|
+
|
282
397
|
assert_equal 3, track_list.size, track_list.inspect
|
283
|
-
assert_equal '748f2b79-8c50-4581-adb1-7708118a48fc', track_list[0].id.uuid
|
284
|
-
assert_equal 'Little Earthquakes', track_list[0].title
|
285
|
-
assert_equal 457760, track_list[0].duration
|
286
|
-
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', track_list[0].artist.id.uuid
|
287
|
-
assert_equal 1, track_list[0].releases.size
|
288
|
-
assert_equal '93264fe5-dff2-47ab-9ca8-1c865733aad9', track_list[0].releases[0].id.uuid
|
398
|
+
assert_equal '748f2b79-8c50-4581-adb1-7708118a48fc', track_list[0].entity.id.uuid
|
399
|
+
assert_equal 'Little Earthquakes', track_list[0].entity.title
|
400
|
+
assert_equal 457760, track_list[0].entity.duration
|
401
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', track_list[0].entity.artist.id.uuid
|
402
|
+
assert_equal 1, track_list[0].entity.releases.size
|
403
|
+
assert_equal '93264fe5-dff2-47ab-9ca8-1c865733aad9', track_list[0].entity.releases[0].id.uuid
|
404
|
+
assert_equal 100, track_list[0].score
|
405
|
+
assert_equal 99, track_list[1].score
|
406
|
+
assert_equal 80, track_list[2].score
|
289
407
|
end
|
290
408
|
|
291
409
|
def test_track_silent_all_these_years_1
|
292
|
-
mbxml = Webservice::MBXML.new
|
410
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/Silent_All_These_Years_1.xml')
|
293
411
|
track = mbxml.get_entity(:track)
|
294
412
|
|
295
413
|
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
@@ -298,7 +416,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
298
416
|
end
|
299
417
|
|
300
418
|
def test_track_silent_all_these_years_2
|
301
|
-
mbxml = Webservice::MBXML.new
|
419
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/Silent_All_These_Years_2.xml')
|
302
420
|
track = mbxml.get_entity(:track)
|
303
421
|
|
304
422
|
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
@@ -315,7 +433,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
315
433
|
end
|
316
434
|
|
317
435
|
def test_track_silent_all_these_years_3
|
318
|
-
mbxml = Webservice::MBXML.new
|
436
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/Silent_All_These_Years_3.xml')
|
319
437
|
track = mbxml.get_entity(:track)
|
320
438
|
|
321
439
|
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
@@ -327,7 +445,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
327
445
|
end
|
328
446
|
|
329
447
|
def test_track_silent_all_these_years_4
|
330
|
-
mbxml = Webservice::MBXML.new
|
448
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/Silent_All_These_Years_4.xml')
|
331
449
|
track = mbxml.get_entity(:track)
|
332
450
|
|
333
451
|
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
@@ -344,7 +462,7 @@ class TestMBXML < Test::Unit::TestCase
|
|
344
462
|
# This test is similiar to silent_all_these_years_3, but it includes an
|
345
463
|
# schema exctension which mustn't disturb the parsing.
|
346
464
|
def test_track_silent_all_these_years_5
|
347
|
-
mbxml = Webservice::MBXML.new
|
465
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/Silent_All_These_Years_5.xml')
|
348
466
|
track = mbxml.get_entity(:track)
|
349
467
|
|
350
468
|
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
@@ -354,28 +472,43 @@ class TestMBXML < Test::Unit::TestCase
|
|
354
472
|
assert_equal 'c2a2cee5-a8ca-4f89-a092-c3e1e65ab7e6', track.puids[0]
|
355
473
|
assert_equal '42ab76ea-5d42-4259-85d7-e7f2c69e4485', track.puids[6]
|
356
474
|
end
|
475
|
+
|
476
|
+
def test_track_silent_all_these_years_6
|
477
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'track/Silent_All_These_Years_6.xml')
|
478
|
+
track = mbxml.get_entity(:track)
|
479
|
+
|
480
|
+
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
481
|
+
assert_equal 'Silent All These Years', track.title
|
482
|
+
assert_equal 253466, track.duration
|
483
|
+
assert_equal 0, track.tags.size
|
484
|
+
end
|
357
485
|
|
358
486
|
def test_label_search
|
359
|
-
mbxml = Webservice::MBXML.new
|
487
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'label/search_result_1.xml')
|
360
488
|
assert_equal nil, mbxml.get_entity(:artist)
|
361
489
|
assert_equal nil, mbxml.get_entity(:release)
|
362
490
|
assert_equal nil, mbxml.get_entity(:track)
|
363
491
|
assert_equal nil, mbxml.get_entity(:label)
|
364
492
|
|
365
493
|
label_list = mbxml.get_entity_list(:label)
|
494
|
+
assert_equal 0, label_list.offset
|
495
|
+
assert_equal 2, label_list.count
|
496
|
+
|
366
497
|
assert_equal 2, label_list.size, label_list.inspect
|
367
|
-
assert_equal '50c384a2-0b44-401b-b893-8181173339c7', label_list[0].id.uuid
|
368
|
-
assert_equal Model::Label::TYPE_ORIGINAL_PRODUCTION, label_list[0].type
|
369
|
-
assert_equal 'Atlantic Records', label_list[0].name
|
370
|
-
assert_equal 'US', label_list[0].country
|
371
|
-
assert_equal
|
372
|
-
assert_equal
|
373
|
-
assert_equal
|
374
|
-
assert_equal '
|
498
|
+
assert_equal '50c384a2-0b44-401b-b893-8181173339c7', label_list[0].entity.id.uuid
|
499
|
+
assert_equal Model::Label::TYPE_ORIGINAL_PRODUCTION, label_list[0].entity.type
|
500
|
+
assert_equal 'Atlantic Records', label_list[0].entity.name
|
501
|
+
assert_equal 'US', label_list[0].entity.country
|
502
|
+
assert_equal 100, label_list[0].score
|
503
|
+
assert_equal 'c2ccaec8-0dfe-4dd5-a710-bddf5fd7c1a7', label_list[1].entity.id.uuid
|
504
|
+
assert_equal nil, label_list[1].entity.type
|
505
|
+
assert_equal 'DRO Atlantic', label_list[1].entity.name
|
506
|
+
assert_equal 'SP', label_list[1].entity.country
|
507
|
+
assert_equal 46, label_list[1].score
|
375
508
|
end
|
376
509
|
|
377
510
|
def test_label_atlantic_records_1
|
378
|
-
mbxml = Webservice::MBXML.new
|
511
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'label/Atlantic_Records_1.xml')
|
379
512
|
label = mbxml.get_entity(:label)
|
380
513
|
|
381
514
|
assert_equal '50c384a2-0b44-401b-b893-8181173339c7', label.id.uuid
|
@@ -383,11 +516,11 @@ class TestMBXML < Test::Unit::TestCase
|
|
383
516
|
assert_equal 'Atlantic Records', label.name
|
384
517
|
assert_equal '121', label.code
|
385
518
|
assert_equal 'US', label.country
|
386
|
-
assert_equal '1947', label.
|
519
|
+
assert_equal '1947', label.begin_date.to_s
|
387
520
|
end
|
388
521
|
|
389
522
|
def test_label_atlantic_records_2
|
390
|
-
mbxml = Webservice::MBXML.new
|
523
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'label/Atlantic_Records_2.xml')
|
391
524
|
label = mbxml.get_entity(:label)
|
392
525
|
|
393
526
|
assert_equal Model::Label::TYPE_DISTRIBUTOR, label.type
|
@@ -396,8 +529,45 @@ class TestMBXML < Test::Unit::TestCase
|
|
396
529
|
assert_equal '121', label.code
|
397
530
|
assert_equal 'fake', label.disambiguation
|
398
531
|
assert_equal 'US', label.country
|
399
|
-
assert_equal '1947', label.
|
400
|
-
assert_equal '2047', label.
|
532
|
+
assert_equal '1947', label.begin_date.to_s
|
533
|
+
assert_equal '2047', label.end_date.to_s
|
534
|
+
assert_equal 1, label.aliases.size
|
535
|
+
assert_equal 'Atlantic Rec.', label.aliases[0].name
|
401
536
|
end
|
402
537
|
|
538
|
+
def test_label_atlantic_records_3
|
539
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'label/Atlantic_Records_3.xml')
|
540
|
+
label = mbxml.get_entity(:label)
|
541
|
+
|
542
|
+
assert_equal '50c384a2-0b44-401b-b893-8181173339c7', label.id.uuid
|
543
|
+
assert_equal Model::Label::TYPE_ORIGINAL_PRODUCTION, label.type
|
544
|
+
assert_equal 'Atlantic Records', label.name
|
545
|
+
assert_equal 3, label.tags.size
|
546
|
+
assert_equal 'american', label.tags[0].text
|
547
|
+
assert_equal 'jazz', label.tags[1].text
|
548
|
+
assert_equal 'blues', label.tags[2].text
|
549
|
+
end
|
550
|
+
|
551
|
+
def test_user_1
|
552
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'user/User_1.xml')
|
553
|
+
users = mbxml.get_entity_list(:user, Model::NS_EXT_1).entities
|
554
|
+
|
555
|
+
assert_equal 1, users.size
|
556
|
+
assert_equal 'matt', users[0].name
|
557
|
+
assert_equal false, users[0].show_nag?
|
558
|
+
assert_equal 2, users[0].types.size
|
559
|
+
assert_equal Model::NS_EXT_1 + 'AutoEditor', users[0].types[0]
|
560
|
+
assert_equal Model::NS_EXT_1 + 'RelationshipEditor', users[0].types[1]
|
561
|
+
end
|
562
|
+
|
563
|
+
def test_new_with_factory
|
564
|
+
factory = MyFactory.new
|
565
|
+
mbxml = Webservice::MBXML.new File.new(DATA_PATH + 'artist/Tori_Amos_2.xml'), factory
|
566
|
+
artist = mbxml.get_entity(:artist)
|
567
|
+
assert artist.is_a?(MyArtist)
|
568
|
+
artist.releases.each do |release|
|
569
|
+
assert release.is_a?(MyRelease)
|
570
|
+
end
|
571
|
+
end
|
572
|
+
|
403
573
|
end
|