rbrainz 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +25 -0
- data/README +11 -0
- data/Rakefile +110 -0
- data/TODO +24 -0
- data/doc/README.rdoc +68 -0
- data/examples/getartist.rb +54 -0
- data/lib/rbrainz.rb +11 -0
- data/lib/rbrainz/data/countrynames.rb +259 -0
- data/lib/rbrainz/data/languagenames.rb +404 -0
- data/lib/rbrainz/data/scriptnames.rb +64 -0
- data/lib/rbrainz/model.rb +48 -0
- data/lib/rbrainz/model/alias.rb +23 -0
- data/lib/rbrainz/model/artist.rb +54 -0
- data/lib/rbrainz/model/disc.rb +30 -0
- data/lib/rbrainz/model/entity.rb +72 -0
- data/lib/rbrainz/model/incomplete_date.rb +76 -0
- data/lib/rbrainz/model/label.rb +55 -0
- data/lib/rbrainz/model/mbid.rb +82 -0
- data/lib/rbrainz/model/release.rb +50 -0
- data/lib/rbrainz/model/release_event.rb +34 -0
- data/lib/rbrainz/model/track.rb +27 -0
- data/lib/rbrainz/webservice.rb +6 -0
- data/lib/rbrainz/webservice/filter.rb +132 -0
- data/lib/rbrainz/webservice/includes.rb +150 -0
- data/lib/rbrainz/webservice/mbxml.rb +404 -0
- data/lib/rbrainz/webservice/query.rb +61 -0
- data/lib/rbrainz/webservice/webservice.rb +69 -0
- data/test/lib/test_entity.rb +58 -0
- data/test/lib/testing_helper.rb +13 -0
- data/test/test-data/README +13 -0
- data/test/test-data/invalid/artist/basic_1.xml +12 -0
- data/test/test-data/invalid/artist/basic_2.xml +12 -0
- data/test/test-data/invalid/artist/empty_1.xml +0 -0
- data/test/test-data/invalid/artist/empty_2.xml +3 -0
- data/test/test-data/invalid/artist/empty_3.xml +7 -0
- data/test/test-data/invalid/artist/search_result_1.xml +11 -0
- data/test/test-data/valid/artist/Tchaikovsky-1.xml +90 -0
- data/test/test-data/valid/artist/Tori_Amos_1.xml +8 -0
- data/test/test-data/valid/artist/Tori_Amos_2.xml +53 -0
- data/test/test-data/valid/artist/Tori_Amos_3.xml +25 -0
- data/test/test-data/valid/artist/Tori_Amos_4.xml +14 -0
- data/test/test-data/valid/artist/Tori_Amos_5.xml +13 -0
- data/test/test-data/valid/artist/empty_1.xml +7 -0
- data/test/test-data/valid/artist/empty_2.xml +11 -0
- data/test/test-data/valid/artist/search_result_1.xml +19 -0
- data/test/test-data/valid/label/Atlantic_Records_1.xml +9 -0
- data/test/test-data/valid/label/Atlantic_Records_2.xml +11 -0
- data/test/test-data/valid/label/search_result_1.xml +14 -0
- data/test/test-data/valid/release/Highway_61_Revisited_1.xml +68 -0
- data/test/test-data/valid/release/Little_Earthquakes_1.xml +24 -0
- data/test/test-data/valid/release/Little_Earthquakes_2.xml +73 -0
- data/test/test-data/valid/release/Mission_Impossible_2.xml +155 -0
- data/test/test-data/valid/release/Under_the_Pink_1.xml +16 -0
- data/test/test-data/valid/release/Under_the_Pink_2.xml +14 -0
- data/test/test-data/valid/release/Under_the_Pink_3.xml +16 -0
- data/test/test-data/valid/release/search_result_1.xml +29 -0
- data/test/test-data/valid/track/Silent_All_These_Years_1.xml +7 -0
- data/test/test-data/valid/track/Silent_All_These_Years_2.xml +21 -0
- data/test/test-data/valid/track/Silent_All_These_Years_3.xml +16 -0
- data/test/test-data/valid/track/Silent_All_These_Years_4.xml +30 -0
- data/test/test-data/valid/track/Silent_All_These_Years_5.xml +20 -0
- data/test/test-data/valid/track/search_result_1.xml +45 -0
- data/test/test-data/valid/user/User_1.xml +15 -0
- data/test/test_alias.rb +50 -0
- data/test/test_artist.rb +132 -0
- data/test/test_artist_filter.rb +36 -0
- data/test/test_artist_includes.rb +63 -0
- data/test/test_disc.rb +38 -0
- data/test/test_incomplete_date.rb +60 -0
- data/test/test_label.rb +129 -0
- data/test/test_label_filter.rb +36 -0
- data/test/test_label_includes.rb +55 -0
- data/test/test_mbid.rb +99 -0
- data/test/test_mbxml.rb +368 -0
- data/test/test_query.rb +24 -0
- data/test/test_release.rb +161 -0
- data/test/test_release_event.rb +67 -0
- data/test/test_release_filter.rb +57 -0
- data/test/test_release_includes.rb +73 -0
- data/test/test_track.rb +102 -0
- data/test/test_track_filter.rb +57 -0
- data/test/test_track_includes.rb +61 -0
- data/test/test_webservice.rb +23 -0
- metadata +138 -0
data/test/test_mbxml.rb
ADDED
@@ -0,0 +1,368 @@
|
|
1
|
+
# $Id$
|
2
|
+
# Copyright (c) 2007, Philipp Wolfer
|
3
|
+
# All rights reserved.
|
4
|
+
# See LICENSE for permissions.
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'rbrainz'
|
8
|
+
include MusicBrainz
|
9
|
+
|
10
|
+
# Unit test for the MBXML class.
|
11
|
+
#
|
12
|
+
# We test against the official test files supplied by
|
13
|
+
# MusicBrainz. See http://bugs.musicbrainz.org/browser/mmd-schema/trunk/test-data
|
14
|
+
class TestMBXML < Test::Unit::TestCase
|
15
|
+
|
16
|
+
DATA_PATH = 'test/test-data/valid/'
|
17
|
+
|
18
|
+
def setup
|
19
|
+
end
|
20
|
+
|
21
|
+
def teardown
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_empty
|
25
|
+
# The first test result is completely empty
|
26
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/empty_1.xml')
|
27
|
+
assert_equal nil, mbxml.get_entity(:artist)
|
28
|
+
assert_equal nil, mbxml.get_entity(:release)
|
29
|
+
assert_equal nil, mbxml.get_entity(:track)
|
30
|
+
assert_equal nil, mbxml.get_entity(:label)
|
31
|
+
assert_equal nil, mbxml.get_entity_list(:artist)
|
32
|
+
assert_equal nil, mbxml.get_entity_list(:release)
|
33
|
+
assert_equal nil, mbxml.get_entity_list(:track)
|
34
|
+
assert_equal nil, mbxml.get_entity_list(:label)
|
35
|
+
|
36
|
+
# The second contains an empty artist list
|
37
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/empty_2.xml')
|
38
|
+
assert_equal nil, mbxml.get_entity(:artist)
|
39
|
+
assert_equal nil, mbxml.get_entity(:release)
|
40
|
+
assert_equal nil, mbxml.get_entity(:track)
|
41
|
+
assert_equal nil, mbxml.get_entity(:label)
|
42
|
+
assert_equal Array.new, mbxml.get_entity_list(:artist)
|
43
|
+
assert_equal nil, mbxml.get_entity_list(:release)
|
44
|
+
assert_equal nil, mbxml.get_entity_list(:track)
|
45
|
+
assert_equal nil, mbxml.get_entity_list(:label)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_artist_search
|
49
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/search_result_1.xml')
|
50
|
+
assert_equal nil, mbxml.get_entity(:artist)
|
51
|
+
assert_equal nil, mbxml.get_entity(:release)
|
52
|
+
assert_equal nil, mbxml.get_entity(:track)
|
53
|
+
assert_equal nil, mbxml.get_entity(:label)
|
54
|
+
|
55
|
+
artist_list = mbxml.get_entity_list(:artist)
|
56
|
+
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
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_artist_tchaikovsky_1
|
65
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/Tchaikovsky-1.xml')
|
66
|
+
artist = mbxml.get_entity(:artist)
|
67
|
+
|
68
|
+
assert_equal '9ddd7abc-9e1b-471d-8031-583bc6bc8be9', artist.id.uuid
|
69
|
+
assert_equal Model::Artist::TYPE_PERSON, artist.type
|
70
|
+
assert_equal 'Пётр Ильич Чайковский', artist.name
|
71
|
+
assert_equal 'Tchaikovsky, Pyotr Ilyich', artist.sort_name
|
72
|
+
assert_equal '1840-05-07', artist.begin_date.to_s
|
73
|
+
assert_equal '1893-11-06', artist.end_date.to_s
|
74
|
+
assert_equal 80, artist.aliases.size
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_artist_tori_amos_1
|
78
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/Tori_Amos_1.xml')
|
79
|
+
artist = mbxml.get_entity(:artist)
|
80
|
+
|
81
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
82
|
+
assert_equal Model::Artist::TYPE_PERSON, artist.type
|
83
|
+
assert_equal 'Tori Amos', artist.name
|
84
|
+
assert_equal 'Amos, Tori', artist.sort_name
|
85
|
+
assert_equal '1963-08-22', artist.begin_date.to_s
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_artist_tori_amos_2
|
89
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/Tori_Amos_2.xml')
|
90
|
+
artist = mbxml.get_entity(:artist)
|
91
|
+
|
92
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
93
|
+
assert_equal Model::Artist::TYPE_PERSON, artist.type
|
94
|
+
assert_equal 'Tori Amos', artist.name
|
95
|
+
assert_equal 'Amos, Tori', artist.sort_name
|
96
|
+
assert_equal '1963-08-22', artist.begin_date.to_s
|
97
|
+
assert_equal 3, artist.releases.size
|
98
|
+
assert_equal 'a7ccb022-f437-4492-8eee-8f85d85cdb96', artist.releases[0].id.uuid
|
99
|
+
assert_equal artist, artist.releases[0].artist
|
100
|
+
assert_equal '9cbf7040-dbdc-403c-940f-7562d9712514', artist.releases[1].id.uuid
|
101
|
+
assert_equal artist, artist.releases[1].artist
|
102
|
+
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', artist.releases[2].id.uuid
|
103
|
+
assert_equal artist, artist.releases[2].artist
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_artist_tori_amos_3
|
107
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/Tori_Amos_3.xml')
|
108
|
+
artist = mbxml.get_entity(:artist)
|
109
|
+
|
110
|
+
assert false, 'Test not implemented'
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_artist_tori_amos_4
|
114
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/Tori_Amos_4.xml')
|
115
|
+
artist = mbxml.get_entity(:artist)
|
116
|
+
|
117
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
118
|
+
assert_equal Model::Artist::TYPE_PERSON, artist.type
|
119
|
+
assert_equal 'Tori Amos', artist.name
|
120
|
+
assert_equal 'Amos, Tori', artist.sort_name
|
121
|
+
assert_equal '1963-08-22', artist.begin_date.to_s
|
122
|
+
assert_equal 3, artist.aliases.size
|
123
|
+
assert_equal 'Myra Ellen Amos', artist.aliases[0].name
|
124
|
+
assert_equal 'Latn', artist.aliases[0].script
|
125
|
+
assert_equal 'Myra Amos', artist.aliases[1].name
|
126
|
+
assert_equal 'Torie Amos', artist.aliases[2].name
|
127
|
+
assert_equal 'Latn', artist.aliases[2].script
|
128
|
+
assert_equal 'Misspelling', artist.aliases[2].type
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_artist_tori_amos_5
|
132
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'artist/Tori_Amos_5.xml')
|
133
|
+
artist = mbxml.get_entity(:artist)
|
134
|
+
|
135
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', artist.id.uuid
|
136
|
+
assert_equal Model::Artist::TYPE_PERSON, artist.type
|
137
|
+
assert_equal 'Tori Amos', artist.name
|
138
|
+
assert_equal 'Amos, Tori', artist.sort_name
|
139
|
+
assert_equal '1963-08-22', artist.begin_date.to_s
|
140
|
+
assert_equal 1, artist.releases.size
|
141
|
+
assert_equal 'a7ccb022-f437-4492-8eee-8f85d85cdb96', artist.releases[0].id.uuid
|
142
|
+
assert_equal 'Strange Little Girls', artist.releases[0].title
|
143
|
+
assert artist.releases[0].types.include?(Model::Release::TYPE_ALBUM)
|
144
|
+
assert artist.releases[0].types.include?(Model::Release::TYPE_OFFICIAL)
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_release_search
|
148
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/search_result_1.xml')
|
149
|
+
assert_equal nil, mbxml.get_entity(:artist)
|
150
|
+
assert_equal nil, mbxml.get_entity(:release)
|
151
|
+
assert_equal nil, mbxml.get_entity(:track)
|
152
|
+
assert_equal nil, mbxml.get_entity(:label)
|
153
|
+
|
154
|
+
release_list = mbxml.get_entity_list(:release)
|
155
|
+
assert_equal 2, release_list.size, release_list.inspect
|
156
|
+
assert_equal '290e10c5-7efc-4f60-ba2c-0dfc0208fbf5', release_list[0].id.uuid
|
157
|
+
assert release_list[0].types.include?(Model::Release::TYPE_ALBUM)
|
158
|
+
assert release_list[0].types.include?(Model::Release::TYPE_OFFICIAL)
|
159
|
+
assert_equal 'Under the Pink', release_list[0].title
|
160
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release_list[0].artist.id.uuid
|
161
|
+
assert_equal 1, release_list[0].release_events.size
|
162
|
+
assert_equal Model::IncompleteDate.new('1994-01-28'), release_list[0].release_events[0].date
|
163
|
+
end
|
164
|
+
|
165
|
+
def test_release_highway_61_revisited_1
|
166
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/Highway_61_Revisited_1.xml')
|
167
|
+
release = mbxml.get_entity(:release)
|
168
|
+
|
169
|
+
assert false, 'Test not implemented'
|
170
|
+
end
|
171
|
+
|
172
|
+
def test_release_little_earthquakes_1
|
173
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/Little_Earthquakes_1.xml')
|
174
|
+
release = mbxml.get_entity(:release)
|
175
|
+
|
176
|
+
assert_equal '02232360-337e-4a3f-ad20-6cdd4c34288c', release.id.uuid
|
177
|
+
assert release.types.include?(Model::Release::TYPE_ALBUM)
|
178
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
179
|
+
assert_equal 'Little Earthquakes', release.title
|
180
|
+
assert_equal 'ENG', release.text_language
|
181
|
+
assert_equal 'Latn', release.text_script
|
182
|
+
assert_equal 'B000002IT2', release.asin
|
183
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release.artist.id.uuid
|
184
|
+
assert_equal 3, release.release_events.size
|
185
|
+
assert_equal Model::IncompleteDate.new('1992-01-13'), release.release_events[0].date
|
186
|
+
assert_equal 'GB', release.release_events[0].country
|
187
|
+
assert_equal 3, release.discs.size
|
188
|
+
assert_equal 'ILKp3.bZmvoMO7wSrq1cw7WatfA-', release.discs[0].id
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_release_little_earthquakes_2
|
192
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/Little_Earthquakes_2.xml')
|
193
|
+
release = mbxml.get_entity(:release)
|
194
|
+
|
195
|
+
assert_equal '02232360-337e-4a3f-ad20-6cdd4c34288c', release.id.uuid
|
196
|
+
assert release.types.include?(Model::Release::TYPE_ALBUM)
|
197
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
198
|
+
assert_equal 'Little Earthquakes', release.title
|
199
|
+
assert_equal 'ENG', release.text_language
|
200
|
+
assert_equal 'Latn', release.text_script
|
201
|
+
assert_equal 'B000002IT2', release.asin
|
202
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', release.artist.id.uuid
|
203
|
+
assert_equal 3, release.release_events.size
|
204
|
+
assert_equal Model::IncompleteDate.new('1992-01-13'), release.release_events[0].date
|
205
|
+
assert_equal 'GB', release.release_events[0].country
|
206
|
+
assert_equal 3, release.discs.size
|
207
|
+
assert_equal 'ILKp3.bZmvoMO7wSrq1cw7WatfA-', release.discs[0].id
|
208
|
+
assert_equal 12, release.tracks.size
|
209
|
+
assert_equal '6e71c125-3cb5-4a19-a1f0-66779c9ae9f4', release.tracks[0].id.uuid
|
210
|
+
assert_equal 'Crucify', release.tracks[0].title
|
211
|
+
assert_equal 301186, release.tracks[0].duration
|
212
|
+
end
|
213
|
+
|
214
|
+
# This is a various artist release.
|
215
|
+
def test_release_mission_impossible_2
|
216
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/Mission_Impossible_2.xml')
|
217
|
+
release = mbxml.get_entity(:release)
|
218
|
+
|
219
|
+
assert_equal '81683d13-e014-4d35-9774-6f536f4ef557', release.id.uuid
|
220
|
+
assert release.types.include?(Model::Release::TYPE_SOUNDTRACK)
|
221
|
+
assert release.types.include?(Model::Release::TYPE_OFFICIAL)
|
222
|
+
assert_equal 'Mission: Impossible 2', release.title
|
223
|
+
assert_equal 'ENG', release.text_language
|
224
|
+
assert_equal 'Latn', release.text_script
|
225
|
+
assert_equal '89ad4ac3-39f7-470e-963a-56509c546377', release.artist.id.uuid
|
226
|
+
assert_equal 1, release.release_events.size
|
227
|
+
assert_equal Model::IncompleteDate.new('2000'), release.release_events[0].date
|
228
|
+
assert_equal 'EU', release.release_events[0].country
|
229
|
+
assert_equal 16, release.tracks.size
|
230
|
+
release.tracks.each {|track|
|
231
|
+
assert_not_equal release.artist, track.artist
|
232
|
+
}
|
233
|
+
end
|
234
|
+
|
235
|
+
def test_release_under_the_pink_1
|
236
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/Under_the_Pink_1.xml')
|
237
|
+
release = mbxml.get_entity(:release)
|
238
|
+
|
239
|
+
assert false, 'Test not implemented'
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_release_under_the_pink_2
|
243
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/Under_the_Pink_2.xml')
|
244
|
+
release = mbxml.get_entity(:release)
|
245
|
+
|
246
|
+
assert false, 'Test not implemented'
|
247
|
+
end
|
248
|
+
|
249
|
+
def test_release_under_the_pink_3
|
250
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'release/Under_the_Pink_3.xml')
|
251
|
+
release = mbxml.get_entity(:release)
|
252
|
+
|
253
|
+
assert false, 'Test not implemented'
|
254
|
+
end
|
255
|
+
|
256
|
+
def test_track_search
|
257
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'track/search_result_1.xml')
|
258
|
+
assert_equal nil, mbxml.get_entity(:artist)
|
259
|
+
assert_equal nil, mbxml.get_entity(:release)
|
260
|
+
assert_equal nil, mbxml.get_entity(:track)
|
261
|
+
assert_equal nil, mbxml.get_entity(:label)
|
262
|
+
|
263
|
+
track_list = mbxml.get_entity_list(:track)
|
264
|
+
assert_equal 3, track_list.size, track_list.inspect
|
265
|
+
assert_equal '748f2b79-8c50-4581-adb1-7708118a48fc', track_list[0].id.uuid
|
266
|
+
assert_equal 'Little Earthquakes', track_list[0].title
|
267
|
+
assert_equal 457760, track_list[0].duration
|
268
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', track_list[0].artist.id.uuid
|
269
|
+
assert_equal 1, track_list[0].releases.size
|
270
|
+
assert_equal '93264fe5-dff2-47ab-9ca8-1c865733aad9', track_list[0].releases[0].id.uuid
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_track_silent_all_these_years_1
|
274
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'track/Silent_All_These_Years_1.xml')
|
275
|
+
track = mbxml.get_entity(:track)
|
276
|
+
|
277
|
+
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
278
|
+
assert_equal 'Silent All These Years', track.title
|
279
|
+
assert_equal 253466, track.duration
|
280
|
+
end
|
281
|
+
|
282
|
+
def test_track_silent_all_these_years_2
|
283
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'track/Silent_All_These_Years_2.xml')
|
284
|
+
track = mbxml.get_entity(:track)
|
285
|
+
|
286
|
+
assert false, 'Test not implemented'
|
287
|
+
end
|
288
|
+
|
289
|
+
def test_track_silent_all_these_years_3
|
290
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'track/Silent_All_These_Years_3.xml')
|
291
|
+
track = mbxml.get_entity(:track)
|
292
|
+
|
293
|
+
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
294
|
+
assert_equal 'Silent All These Years', track.title
|
295
|
+
assert_equal 253466, track.duration
|
296
|
+
assert_equal 7, track.puids.size
|
297
|
+
assert_equal 'c2a2cee5-a8ca-4f89-a092-c3e1e65ab7e6', track.puids[0]
|
298
|
+
assert_equal '42ab76ea-5d42-4259-85d7-e7f2c69e4485', track.puids[6]
|
299
|
+
end
|
300
|
+
|
301
|
+
def test_track_silent_all_these_years_4
|
302
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'track/Silent_All_These_Years_4.xml')
|
303
|
+
track = mbxml.get_entity(:track)
|
304
|
+
|
305
|
+
assert_equal 'd6118046-407d-4e06-a1ba-49c399a4c42f', track.id.uuid
|
306
|
+
assert_equal 'Silent All These Years', track.title
|
307
|
+
assert_equal 253466, track.duration
|
308
|
+
assert_equal 'c0b2500e-0cef-4130-869d-732b23ed9df5', track.artist.id.uuid
|
309
|
+
assert_equal 1, track.releases.size
|
310
|
+
assert_equal '02232360-337e-4a3f-ad20-6cdd4c34288c', track.releases[0].id.uuid
|
311
|
+
assert_equal 7, track.puids.size
|
312
|
+
assert_equal 'c2a2cee5-a8ca-4f89-a092-c3e1e65ab7e6', track.puids[0]
|
313
|
+
assert_equal '42ab76ea-5d42-4259-85d7-e7f2c69e4485', track.puids[6]
|
314
|
+
end
|
315
|
+
|
316
|
+
def test_track_silent_all_these_years_5
|
317
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'track/Silent_All_These_Years_5.xml')
|
318
|
+
track = mbxml.get_entity(:track)
|
319
|
+
|
320
|
+
assert false, 'Test not implemented'
|
321
|
+
end
|
322
|
+
|
323
|
+
def test_label_search
|
324
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'label/search_result_1.xml')
|
325
|
+
assert_equal nil, mbxml.get_entity(:artist)
|
326
|
+
assert_equal nil, mbxml.get_entity(:release)
|
327
|
+
assert_equal nil, mbxml.get_entity(:track)
|
328
|
+
assert_equal nil, mbxml.get_entity(:label)
|
329
|
+
|
330
|
+
label_list = mbxml.get_entity_list(:label)
|
331
|
+
assert_equal 2, label_list.size, label_list.inspect
|
332
|
+
assert_equal '50c384a2-0b44-401b-b893-8181173339c7', label_list[0].id.uuid
|
333
|
+
assert_equal Model::Label::TYPE_ORIGINAL_PRODUCTION, label_list[0].type
|
334
|
+
assert_equal 'Atlantic Records', label_list[0].name
|
335
|
+
assert_equal 'US', label_list[0].country
|
336
|
+
assert_equal 'c2ccaec8-0dfe-4dd5-a710-bddf5fd7c1a7', label_list[1].id.uuid
|
337
|
+
assert_equal nil, label_list[1].type
|
338
|
+
assert_equal 'DRO Atlantic', label_list[1].name
|
339
|
+
assert_equal 'SP', label_list[1].country
|
340
|
+
end
|
341
|
+
|
342
|
+
def test_label_atlantic_records_1
|
343
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'label/Atlantic_Records_1.xml')
|
344
|
+
label = mbxml.get_entity(:label)
|
345
|
+
|
346
|
+
assert_equal '50c384a2-0b44-401b-b893-8181173339c7', label.id.uuid
|
347
|
+
assert_equal Model::Label::TYPE_ORIGINAL_PRODUCTION, label.type
|
348
|
+
assert_equal 'Atlantic Records', label.name
|
349
|
+
assert_equal '121', label.code
|
350
|
+
assert_equal 'US', label.country
|
351
|
+
assert_equal '1947', label.founding_date.to_s
|
352
|
+
end
|
353
|
+
|
354
|
+
def test_label_atlantic_records_2
|
355
|
+
mbxml = Webservice::MBXML.new IO.read(DATA_PATH + 'label/Atlantic_Records_2.xml')
|
356
|
+
label = mbxml.get_entity(:label)
|
357
|
+
|
358
|
+
assert_equal Model::Label::TYPE_DISTRIBUTOR, label.type
|
359
|
+
assert_equal 'Atlantic Records', label.name
|
360
|
+
assert_equal 'AR SortName', label.sort_name
|
361
|
+
assert_equal '121', label.code
|
362
|
+
assert_equal 'fake', label.disambiguation
|
363
|
+
assert_equal 'US', label.country
|
364
|
+
assert_equal '1947', label.founding_date.to_s
|
365
|
+
assert_equal '2047', label.dissolving_date.to_s
|
366
|
+
end
|
367
|
+
|
368
|
+
end
|
data/test/test_query.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# $Id$
|
2
|
+
# Copyright (c) 2007, Philipp Wolfer
|
3
|
+
# All rights reserved.
|
4
|
+
# See LICENSE for permissions.
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'rbrainz'
|
8
|
+
include MusicBrainz
|
9
|
+
|
10
|
+
# Unit test for the Query class.
|
11
|
+
class TestQuery < Test::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
end
|
18
|
+
|
19
|
+
# TODO: Implement a mock webservice for testing
|
20
|
+
def test_not_implemented
|
21
|
+
assert false, 'Unit test for ' + self.class.name + ' not implemented!'
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,161 @@
|
|
1
|
+
# $Id$
|
2
|
+
# Copyright (c) 2007, Philipp Wolfer
|
3
|
+
# All rights reserved.
|
4
|
+
# See LICENSE for permissions.
|
5
|
+
|
6
|
+
require 'test_entity'
|
7
|
+
|
8
|
+
# Unit test for the Release model.
|
9
|
+
class TestRelease < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@tested_class = Model::Release
|
13
|
+
@invalid_entity_types = [:artist, :track, :label]
|
14
|
+
@tracks = [Model::Track.new, Model::Track.new]
|
15
|
+
@release_events = [Model::ReleaseEvent.new, Model::ReleaseEvent.new]
|
16
|
+
@discs = [Model::Disc.new, Model::Disc.new]
|
17
|
+
end
|
18
|
+
|
19
|
+
def teardown
|
20
|
+
end
|
21
|
+
|
22
|
+
# Include the tests for Entity
|
23
|
+
include TestEntity
|
24
|
+
|
25
|
+
def test_new_release
|
26
|
+
release = nil
|
27
|
+
assert_nothing_raised {release = Model::Release.new}
|
28
|
+
assert release.is_a?(Model::Entity)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_title
|
32
|
+
release = Model::Release.new
|
33
|
+
assert release.title.nil?
|
34
|
+
assert_nothing_raised {release.title = 'Draconian Times'}
|
35
|
+
assert_equal 'Draconian Times', release.title
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_asin
|
39
|
+
release = Model::Release.new
|
40
|
+
assert release.asin.nil?
|
41
|
+
assert_nothing_raised {release.asin = 'B000024IXL'}
|
42
|
+
assert_equal 'B000024IXL', release.asin
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_artist
|
46
|
+
release = Model::Release.new
|
47
|
+
artist = Model::Artist.new
|
48
|
+
assert release.artist.nil?
|
49
|
+
assert_nothing_raised {release.artist = artist}
|
50
|
+
assert_equal artist, release.artist
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_text_language
|
54
|
+
release = Model::Release.new
|
55
|
+
assert release.text_language.nil?
|
56
|
+
assert_nothing_raised {release.text_language = 'ENG'}
|
57
|
+
assert_equal 'ENG', release.text_language
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_text_script
|
61
|
+
release = Model::Release.new
|
62
|
+
assert release.text_script.nil?
|
63
|
+
assert_nothing_raised {release.text_script = 'Latn'}
|
64
|
+
assert_equal 'Latn', release.text_script
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_types
|
68
|
+
release = Model::Release.new
|
69
|
+
assert_equal 0, release.types.size
|
70
|
+
types = []
|
71
|
+
assert_nothing_raised {
|
72
|
+
types = [Model::Release::TYPE_ALBUM, Model::Release::TYPE_AUDIOBOOK,
|
73
|
+
Model::Release::TYPE_BOOTLEG, Model::Release::TYPE_COMPILATION,
|
74
|
+
Model::Release::TYPE_EP, Model::Release::TYPE_INTERVIEW,
|
75
|
+
Model::Release::TYPE_LIVE, Model::Release::TYPE_NONE,
|
76
|
+
Model::Release::TYPE_OFFICIAL, Model::Release::TYPE_OTHER,
|
77
|
+
Model::Release::TYPE_PROMOTION, Model::Release::TYPE_PSEUDO_RELEASE,
|
78
|
+
Model::Release::TYPE_REMIX, Model::Release::TYPE_SINGLE,
|
79
|
+
Model::Release::TYPE_SOUNDTRACK, Model::Release::TYPE_SPOKENWORD]
|
80
|
+
}
|
81
|
+
|
82
|
+
# Adding all those types should be possible.
|
83
|
+
types.each {|type|
|
84
|
+
assert_nothing_raised {release.types << type}
|
85
|
+
}
|
86
|
+
assert_equal 16, release.types.size
|
87
|
+
|
88
|
+
# Removing the types again
|
89
|
+
types.each {|type|
|
90
|
+
assert_nothing_raised {release.types.delete type}
|
91
|
+
}
|
92
|
+
assert_equal 0, release.types.size
|
93
|
+
end
|
94
|
+
|
95
|
+
# Many tracks can be added
|
96
|
+
def test_add_and_remove_tracks
|
97
|
+
release = Model::Release.new
|
98
|
+
assert_equal 0, release.tracks.size
|
99
|
+
assert_nothing_raised {release.tracks << @tracks[0]}
|
100
|
+
assert_equal 1, release.tracks.size
|
101
|
+
assert_nothing_raised {release.tracks << @tracks[1]}
|
102
|
+
assert_equal 2, release.tracks.size
|
103
|
+
|
104
|
+
assert_nothing_raised {release.tracks.delete @tracks[1]}
|
105
|
+
assert_equal 1, release.tracks.size
|
106
|
+
assert_nothing_raised {release.tracks.delete @tracks[0]}
|
107
|
+
assert_equal 0, release.tracks.size
|
108
|
+
end
|
109
|
+
|
110
|
+
# You can pass an array of tracks to add them all.
|
111
|
+
def test_add_several_tracks_at_once
|
112
|
+
release = Model::Release.new
|
113
|
+
assert_nothing_raised {release.tracks = @tracks}
|
114
|
+
assert_equal @tracks, release.tracks
|
115
|
+
end
|
116
|
+
|
117
|
+
# Many release events can be added
|
118
|
+
def test_add_and_remove_release_events
|
119
|
+
release = Model::Release.new
|
120
|
+
assert_equal 0, release.release_events.size
|
121
|
+
assert_nothing_raised {release.release_events << @release_events[0]}
|
122
|
+
assert_equal 1, release.release_events.size
|
123
|
+
assert_nothing_raised {release.release_events << @release_events[1]}
|
124
|
+
assert_equal 2, release.release_events.size
|
125
|
+
|
126
|
+
assert_nothing_raised {release.release_events.delete @release_events[1]}
|
127
|
+
assert_equal 1, release.release_events.size
|
128
|
+
assert_nothing_raised {release.release_events.delete @release_events[0]}
|
129
|
+
assert_equal 0, release.release_events.size
|
130
|
+
end
|
131
|
+
|
132
|
+
# You can pass an array of aliases to add them all.
|
133
|
+
def test_add_several_release_events_at_once
|
134
|
+
release = Model::Release.new
|
135
|
+
assert_nothing_raised {release.release_events = @release_events}
|
136
|
+
assert_equal @release_events, release.release_events
|
137
|
+
end
|
138
|
+
|
139
|
+
# Many discs can be added
|
140
|
+
def test_add_and_remove_disc
|
141
|
+
release = Model::Release.new
|
142
|
+
assert_equal 0, release.discs.size
|
143
|
+
assert_nothing_raised {release.discs << @discs[0]}
|
144
|
+
assert_equal 1, release.discs.size
|
145
|
+
assert_nothing_raised {release.discs << @discs[1]}
|
146
|
+
assert_equal 2, release.discs.size
|
147
|
+
|
148
|
+
assert_nothing_raised {release.discs.delete @discs[1]}
|
149
|
+
assert_equal 1, release.discs.size
|
150
|
+
assert_nothing_raised {release.discs.delete @discs[0]}
|
151
|
+
assert_equal 0, release.discs.size
|
152
|
+
end
|
153
|
+
|
154
|
+
# You can pass an array of discs to add them all.
|
155
|
+
def test_add_several_discs_at_once
|
156
|
+
release = Model::Release.new
|
157
|
+
assert_nothing_raised {release.discs = @discs}
|
158
|
+
assert_equal @discs, release.discs
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|