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
@@ -0,0 +1,63 @@
|
|
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 ArtistIncludes class.
|
11
|
+
class TestArtistIncludes < Test::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_includes
|
20
|
+
includes = Webservice::ArtistIncludes.new(
|
21
|
+
:aliases => true,
|
22
|
+
:artist_rels => true,
|
23
|
+
:release_rels => true,
|
24
|
+
:track_rels => true,
|
25
|
+
:label_rels => true,
|
26
|
+
:url_rels => true,
|
27
|
+
:releases => ['Album', 'Official'],
|
28
|
+
:va_releases => ['Album', 'Official']
|
29
|
+
)
|
30
|
+
result_string = includes.to_s
|
31
|
+
assert_equal 'inc=', result_string[0..3]
|
32
|
+
|
33
|
+
result_array = result_string[4..-1].split('%20')
|
34
|
+
assert result_array.include?('aliases')
|
35
|
+
assert result_array.include?('artist-rels')
|
36
|
+
assert result_array.include?('release-rels')
|
37
|
+
assert result_array.include?('track-rels')
|
38
|
+
assert result_array.include?('label-rels')
|
39
|
+
assert result_array.include?('url-rels')
|
40
|
+
assert result_array.include?('sa-Album')
|
41
|
+
assert result_array.include?('sa-Official')
|
42
|
+
assert result_array.include?('va-Album')
|
43
|
+
assert result_array.include?('va-Official')
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_empty_includes
|
47
|
+
includes = Webservice::ArtistIncludes.new(
|
48
|
+
:aliases => false,
|
49
|
+
:artist_rels => false,
|
50
|
+
:release_rels => false,
|
51
|
+
:track_rels => false,
|
52
|
+
:label_rels => false,
|
53
|
+
:url_rels => false,
|
54
|
+
:releases => [],
|
55
|
+
:va_releases => []
|
56
|
+
)
|
57
|
+
assert_equal '', includes.to_s
|
58
|
+
|
59
|
+
includes = Webservice::ArtistIncludes.new({})
|
60
|
+
assert_equal '', includes.to_s
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
data/test/test_disc.rb
ADDED
@@ -0,0 +1,38 @@
|
|
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/model'
|
8
|
+
include MusicBrainz
|
9
|
+
|
10
|
+
# Unit test for the Disc model.
|
11
|
+
class TestDisc < Test::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_new_disc
|
20
|
+
disc = nil
|
21
|
+
assert_nothing_raised {disc = Model::Disc.new}
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_id
|
25
|
+
disc = Model::Disc.new
|
26
|
+
assert disc.id.nil?
|
27
|
+
assert_nothing_raised {disc.id = 'Tit3F0Do_sZ_7NbfM_1vlEbF0wo-'}
|
28
|
+
assert_equal 'Tit3F0Do_sZ_7NbfM_1vlEbF0wo-', disc.id
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_sectors
|
32
|
+
disc = Model::Disc.new
|
33
|
+
assert disc.sectors.nil?
|
34
|
+
assert_nothing_raised {disc.sectors = 264432}
|
35
|
+
assert_equal 264432, disc.sectors
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,60 @@
|
|
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/model'
|
8
|
+
include MusicBrainz
|
9
|
+
|
10
|
+
# Unit test for the IncompleteDate model.
|
11
|
+
class TestIncompleteDate < Test::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@date_year_month_day = Model::IncompleteDate.new '1980-08-22'
|
15
|
+
@date_year_month = Model::IncompleteDate.new '1980-08'
|
16
|
+
@date_year = Model::IncompleteDate.new '1980'
|
17
|
+
end
|
18
|
+
|
19
|
+
def teardown
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_new
|
23
|
+
date = nil
|
24
|
+
assert_nothing_raised {date = Model::IncompleteDate.new('1969-01-05')}
|
25
|
+
assert_equal 1969, date.year
|
26
|
+
assert_equal 1, date.month
|
27
|
+
assert_equal 5, date.day
|
28
|
+
assert_nothing_raised {date = Model::IncompleteDate.new(1980)}
|
29
|
+
assert_equal 1980, date.year
|
30
|
+
assert_nothing_raised {date = Model::IncompleteDate.new(Date.parse('1969-01-05'))}
|
31
|
+
assert_equal 1969, date.year
|
32
|
+
assert_equal 1, date.month
|
33
|
+
assert_equal 5, date.day
|
34
|
+
assert_nothing_raised {date = Model::IncompleteDate.new(nil)}
|
35
|
+
assert_equal nil, date.year
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_invalid_format
|
39
|
+
assert_raise(ArgumentError) {date = Model::IncompleteDate.new('69-01-05')}
|
40
|
+
assert_raise(ArgumentError) {date = Model::IncompleteDate.new(69)}
|
41
|
+
assert_raise(ArgumentError) {date = Model::IncompleteDate.new('1969/01/05')}
|
42
|
+
assert_raise(ArgumentError) {date = Model::IncompleteDate.new('01-05-1969')}
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_to_string
|
46
|
+
assert_equal '1980-08-22', @date_year_month_day.to_s
|
47
|
+
assert_equal '1980-08', @date_year_month.to_s
|
48
|
+
assert_equal '1980', @date_year.to_s
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_equality
|
52
|
+
assert_equal(@date_year_month_day, @date_year_month,
|
53
|
+
"#{@date_year_month_day.to_s} <=> #{@date_year_month.to_s}")
|
54
|
+
assert_equal(@date_year_month, @date_year,
|
55
|
+
"#{@date_year_month.to_s} <=> #{@date_year.to_s}")
|
56
|
+
assert_equal(@date_year, @date_year_month_day,
|
57
|
+
"#{@date_year.to_s} <=> #{@date_year_month_day.to_s}")
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
data/test/test_label.rb
ADDED
@@ -0,0 +1,129 @@
|
|
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 Label model.
|
9
|
+
class TestLabel < Test::Unit::TestCase
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@tested_class = Model::Label
|
13
|
+
@invalid_entity_types = [:artist, :release, :track]
|
14
|
+
@releases = [Model::Release.new, Model::Release.new]
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
end
|
19
|
+
|
20
|
+
# Include the tests for Entity
|
21
|
+
include TestEntity
|
22
|
+
|
23
|
+
def test_new_label
|
24
|
+
label = nil
|
25
|
+
assert_nothing_raised {label = Model::Label.new}
|
26
|
+
assert label.is_a?(Model::Entity)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_name
|
30
|
+
label = Model::Label.new
|
31
|
+
assert label.name.nil?
|
32
|
+
assert_nothing_raised {label.name = 'Century Media'}
|
33
|
+
assert_equal 'Century Media', label.name
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_sort_name
|
37
|
+
label = Model::Label.new
|
38
|
+
assert label.sort_name.nil?
|
39
|
+
assert_nothing_raised {label.sort_name = 'Century Media'}
|
40
|
+
assert_equal 'Century Media', label.sort_name
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_disambiguation
|
44
|
+
label = Model::Label.new
|
45
|
+
assert label.disambiguation.nil?
|
46
|
+
assert_nothing_raised {label.disambiguation = 'Disambiguation comment'}
|
47
|
+
assert_equal 'Disambiguation comment', label.disambiguation
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_code
|
51
|
+
label = Model::Label.new
|
52
|
+
assert label.code.nil?
|
53
|
+
assert_nothing_raised {label.code = '6975'}
|
54
|
+
assert_equal '6975', label.code
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_country
|
58
|
+
label = Model::Label.new
|
59
|
+
assert label.country.nil?
|
60
|
+
assert_nothing_raised {label.country = 'DE'}
|
61
|
+
assert_equal 'DE', label.country
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_type
|
65
|
+
label = Model::Label.new
|
66
|
+
assert label.type.nil?
|
67
|
+
assert_nothing_raised {label.type = Model::Label::TYPE_DISTRIBUTOR}
|
68
|
+
assert_equal Model::Label::TYPE_DISTRIBUTOR, label.type
|
69
|
+
assert_nothing_raised {label.type = Model::Label::TYPE_HOLDING}
|
70
|
+
assert_equal Model::Label::TYPE_HOLDING, label.type
|
71
|
+
assert_nothing_raised {label.type = Model::Label::TYPE_ORIGINAL_PRODUCTION}
|
72
|
+
assert_equal Model::Label::TYPE_ORIGINAL_PRODUCTION, label.type
|
73
|
+
assert_nothing_raised {label.type = Model::Label::TYPE_BOOTLEG_PRODUCTION}
|
74
|
+
assert_equal Model::Label::TYPE_BOOTLEG_PRODUCTION, label.type
|
75
|
+
assert_nothing_raised {label.type = Model::Label::TYPE_REISSUE_PRODUCTION}
|
76
|
+
assert_equal Model::Label::TYPE_REISSUE_PRODUCTION, label.type
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_founding_date
|
80
|
+
label = Model::Label.new
|
81
|
+
date = Model::IncompleteDate.new '1988-04-18'
|
82
|
+
assert_nothing_raised {label.founding_date}
|
83
|
+
assert_equal nil, label.founding_date
|
84
|
+
assert_nothing_raised {label.founding_date = date}
|
85
|
+
assert_equal date, label.founding_date
|
86
|
+
|
87
|
+
# It should be able to supply a date as a string,
|
88
|
+
# but Label should convert it to an IncompleteDate.
|
89
|
+
assert_nothing_raised {label.founding_date = '1988-04-20'}
|
90
|
+
assert_equal Model::IncompleteDate.new('1988-04-20'), label.founding_date
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_dissolving_date
|
94
|
+
label = Model::Label.new
|
95
|
+
date = Model::IncompleteDate.new '1988-04-18'
|
96
|
+
assert_nothing_raised {label.dissolving_date}
|
97
|
+
assert_equal nil, label.dissolving_date
|
98
|
+
assert_nothing_raised {label.dissolving_date = date}
|
99
|
+
assert_equal date, label.dissolving_date
|
100
|
+
|
101
|
+
# It should be able to supply a date as a string,
|
102
|
+
# but Label should convert it to an IncompleteDate.
|
103
|
+
assert_nothing_raised {label.dissolving_date = '1988-04-20'}
|
104
|
+
assert_equal Model::IncompleteDate.new('1988-04-20'), label.dissolving_date
|
105
|
+
end
|
106
|
+
|
107
|
+
# Many releases can be added
|
108
|
+
def test_add_and_remove_releases
|
109
|
+
label = Model::Label.new
|
110
|
+
assert_equal 0, label.releases.size
|
111
|
+
assert_nothing_raised {label.releases << @releases[0]}
|
112
|
+
assert_equal 1, label.releases.size
|
113
|
+
assert_nothing_raised {label.releases << @releases[1]}
|
114
|
+
assert_equal 2, label.releases.size
|
115
|
+
|
116
|
+
assert_nothing_raised {label.releases.delete @releases[1]}
|
117
|
+
assert_equal 1, label.releases.size
|
118
|
+
assert_nothing_raised {label.releases.delete @releases[0]}
|
119
|
+
assert_equal 0, label.releases.size
|
120
|
+
end
|
121
|
+
|
122
|
+
# You can pass an array of releases to add them all.
|
123
|
+
def test_add_several_releases_at_once
|
124
|
+
label = Model::Label.new
|
125
|
+
assert_nothing_raised {label.releases = @releases}
|
126
|
+
assert_equal @releases, label.releases
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# $Id$
|
2
|
+
# Copyright (c) 2007, Philipp Wolfer
|
3
|
+
# All rights reserved.
|
4
|
+
# See LICENSE for permissions.
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'testing_helper'
|
8
|
+
require 'rbrainz'
|
9
|
+
include MusicBrainz
|
10
|
+
|
11
|
+
# Unit test for the LabelFilter class.
|
12
|
+
class TestLabelFilter < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@filter_hash = {:name => 'Century Media', :limit => 10}
|
16
|
+
end
|
17
|
+
|
18
|
+
def teardown
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_filter
|
22
|
+
filter = Webservice::LabelFilter.new(@filter_hash)
|
23
|
+
filter_string = filter.to_s
|
24
|
+
assert_not_equal '&', filter_string[0]
|
25
|
+
|
26
|
+
result_hash = query_string_to_hash filter_string
|
27
|
+
assert_equal @filter_hash[:name], result_hash['name'], filter_string
|
28
|
+
assert_equal @filter_hash[:limit].to_s, result_hash['limit'], filter_string
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_empty_filter
|
32
|
+
filter = Webservice::LabelFilter.new({})
|
33
|
+
assert_equal '', filter.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,55 @@
|
|
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 LabelIncludes class.
|
11
|
+
class TestLabelIncludes < Test::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_includes
|
20
|
+
includes = Webservice::LabelIncludes.new(
|
21
|
+
:aliases => true,
|
22
|
+
:artist_rels => true,
|
23
|
+
:release_rels => true,
|
24
|
+
:track_rels => true,
|
25
|
+
:label_rels => true,
|
26
|
+
:url_rels => true
|
27
|
+
)
|
28
|
+
result_string = includes.to_s
|
29
|
+
assert_equal 'inc=', result_string[0..3]
|
30
|
+
|
31
|
+
result_array = result_string[4..-1].split('%20')
|
32
|
+
assert result_array.include?('aliases')
|
33
|
+
assert result_array.include?('artist-rels')
|
34
|
+
assert result_array.include?('release-rels')
|
35
|
+
assert result_array.include?('track-rels')
|
36
|
+
assert result_array.include?('label-rels')
|
37
|
+
assert result_array.include?('url-rels')
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_empty_includes
|
41
|
+
includes = Webservice::LabelIncludes.new(
|
42
|
+
:aliases => false,
|
43
|
+
:artist_rels => false,
|
44
|
+
:release_rels => false,
|
45
|
+
:track_rels => false,
|
46
|
+
:label_rels => false,
|
47
|
+
:url_rels => false
|
48
|
+
)
|
49
|
+
assert_equal '', includes.to_s
|
50
|
+
|
51
|
+
includes = Webservice::LabelIncludes.new({})
|
52
|
+
assert_equal '', includes.to_s
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
data/test/test_mbid.rb
ADDED
@@ -0,0 +1,99 @@
|
|
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/model'
|
8
|
+
include MusicBrainz
|
9
|
+
|
10
|
+
# Unit test for the MBID model.
|
11
|
+
class TestMBID < Test::Unit::TestCase
|
12
|
+
|
13
|
+
def setup
|
14
|
+
@valid_entities = [:artist, :release, :track, :label,
|
15
|
+
'artist', 'release', 'track', 'label']
|
16
|
+
@valid_uuids = ['9d30e408-1559-448b-b491-2f8de1583ccf']
|
17
|
+
@invalid_uris = [nil, '', 'http://musicbrainz.org/labels/727ad90b-7ef4-48d2-8f16-c34016544822',
|
18
|
+
'http://musicbrainz.org/label/727ad90b-7ef4-48d2-8f16-c34016544822?']
|
19
|
+
@invalid_entities = [nil, '', 'entity', :entity, 1]
|
20
|
+
@invalid_uuids = [nil, '', 1, '727ad90b7ef448d28f16c34016544822',
|
21
|
+
'727ad90b-7ef4-48d2-8f16-c34016544822.html',
|
22
|
+
'9g30e408-1559-448b-b491-2f8de1583ccf']
|
23
|
+
end
|
24
|
+
|
25
|
+
def teardown
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_private_new
|
29
|
+
assert_raise(NoMethodError) {Model::MBID.new}
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_from_uri
|
33
|
+
@valid_entities.each{|entity|
|
34
|
+
@valid_uuids.each{|uuid|
|
35
|
+
assert_nothing_raised \
|
36
|
+
{Model::MBID.from_uri 'http://musicbrainz.org/' + entity.to_s + '/' + uuid}
|
37
|
+
}
|
38
|
+
}
|
39
|
+
@invalid_uris.each{|uri|
|
40
|
+
assert_raise(Model::InvalidMBIDError) {Model::MBID.from_uri uri}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_from_uuid
|
45
|
+
@valid_entities.each{|entity|
|
46
|
+
@valid_uuids.each{|uuid|
|
47
|
+
assert_nothing_raised {Model::MBID.from_uuid entity, uuid}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
@invalid_entities.each{|entity|
|
51
|
+
assert_raise(Model::UnknownEntityError, 'Invalid entity ' + entity.inspect + '') \
|
52
|
+
{Model::MBID.from_uuid entity, @valid_uuids[0]}
|
53
|
+
}
|
54
|
+
@invalid_uuids.each{|uuid|
|
55
|
+
assert_raise(Model::InvalidUUIDError, 'Invalid uuid ' + uuid.inspect + '') \
|
56
|
+
{Model::MBID.from_uuid @valid_entities[0], uuid}
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_to_s
|
61
|
+
@valid_entities.each{|entity|
|
62
|
+
@valid_uuids.each{|uuid|
|
63
|
+
uri = 'http://musicbrainz.org/' + entity.to_s + '/' + uuid
|
64
|
+
mbid = Model::MBID.from_uuid entity, uuid
|
65
|
+
assert_equal uri, mbid.to_s
|
66
|
+
mbid = Model::MBID.from_uri uri
|
67
|
+
assert_equal uri, mbid.to_s
|
68
|
+
}
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_read_attributes
|
73
|
+
@valid_entities.each{|entity|
|
74
|
+
@valid_uuids.each{|uuid|
|
75
|
+
mbid = Model::MBID.from_uuid entity, uuid
|
76
|
+
assert_equal entity.to_sym, mbid.entity
|
77
|
+
assert_equal uuid, mbid.uuid
|
78
|
+
mbid = Model::MBID.from_uri 'http://musicbrainz.org/' + entity.to_s + '/' + uuid
|
79
|
+
assert_equal entity.to_sym, mbid.entity
|
80
|
+
assert_equal uuid, mbid.uuid
|
81
|
+
}
|
82
|
+
}
|
83
|
+
end
|
84
|
+
|
85
|
+
# Test if the attributes are read only.
|
86
|
+
def test_write_attributes
|
87
|
+
mbid = Model::MBID.from_uuid @valid_entities[0], @valid_uuids[0]
|
88
|
+
assert_raise(NoMethodError) {mbid.entity = :release}
|
89
|
+
assert_raise(NoMethodError) {mbid.uuid = @valid_uuids[0]}
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_equality
|
93
|
+
mbid1 = Model::MBID.from_uuid @valid_entities[0], @valid_uuids[0]
|
94
|
+
mbid2 = Model::MBID.from_uuid @valid_entities[0], @valid_uuids[0]
|
95
|
+
assert_equal mbid1, mbid1
|
96
|
+
assert_equal mbid1, mbid2
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|