rbrainz 0.1.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/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
|