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