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
@@ -0,0 +1,53 @@
|
|
1
|
+
# $Id: mock_webservice.rb 147 2007-07-19 17:10:26Z 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.
|
7
|
+
|
8
|
+
require 'rbrainz/webservice/webservice'
|
9
|
+
|
10
|
+
class MockWebservice < MusicBrainz::Webservice::IWebservice
|
11
|
+
|
12
|
+
DATA_PATH = 'test/test-data/'
|
13
|
+
|
14
|
+
def get(entity_type, options = {:id => nil, :include => nil, :filter => nil, :version => 1})
|
15
|
+
case entity_type
|
16
|
+
when :artist
|
17
|
+
if options[:id]
|
18
|
+
case options[:id]
|
19
|
+
when '00000000-0000-0000-0000-000000000000'
|
20
|
+
file = 'invalid/artist/basic_1.xml'
|
21
|
+
when '11111111-1111-1111-1111-111111111111'
|
22
|
+
file = 'valid/artist/empty_1.xml'
|
23
|
+
else
|
24
|
+
file = 'valid/artist/Tori_Amos_1.xml'
|
25
|
+
end
|
26
|
+
else
|
27
|
+
file = 'valid/artist/search_result_1.xml'
|
28
|
+
end
|
29
|
+
when :release
|
30
|
+
if options[:id]
|
31
|
+
file = 'valid/release/Under_the_Pink_1.xml'
|
32
|
+
else
|
33
|
+
file = 'valid/release/search_result_1.xml'
|
34
|
+
end
|
35
|
+
when :track
|
36
|
+
if options[:id]
|
37
|
+
file = 'valid/track/Silent_All_These_Years_1.xml'
|
38
|
+
else
|
39
|
+
file = 'valid/track/search_result_1.xml'
|
40
|
+
end
|
41
|
+
when :label
|
42
|
+
if options[:id]
|
43
|
+
file = 'valid/label/Atlantic_Records_1.xml'
|
44
|
+
else
|
45
|
+
file = 'valid/label/search_result_1.xml'
|
46
|
+
end
|
47
|
+
when :user
|
48
|
+
file = 'valid/user/User_1.xml'
|
49
|
+
end
|
50
|
+
return File.read(DATA_PATH + file)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/test/lib/test_entity.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
# $Id: test_entity.rb
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# $Id: test_entity.rb 118 2007-07-11 22:46:58Z phw $
|
2
|
+
#
|
3
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
|
+
# Copyright:: Copyright (c) 2007, 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/model'
|
@@ -15,7 +17,7 @@ module TestEntity
|
|
15
17
|
|
16
18
|
def test_valid_mbid
|
17
19
|
entity = @tested_class.new
|
18
|
-
valid_mbid = Model::MBID.
|
20
|
+
valid_mbid = Model::MBID.parse('9d30e408-1559-448b-b491-2f8de1583ccf', @tested_class.entity_type )
|
19
21
|
|
20
22
|
assert_equal nil, entity.id
|
21
23
|
assert_nothing_raised {entity.id = valid_mbid}
|
@@ -24,7 +26,7 @@ module TestEntity
|
|
24
26
|
|
25
27
|
def test_valid_mbid_from_uuid
|
26
28
|
entity = @tested_class.new
|
27
|
-
valid_mbid = Model::MBID.
|
29
|
+
valid_mbid = Model::MBID.parse('9d30e408-1559-448b-b491-2f8de1583ccf', @tested_class.entity_type )
|
28
30
|
|
29
31
|
assert_equal nil, entity.id
|
30
32
|
assert_nothing_raised {entity.id = valid_mbid.uuid}
|
@@ -33,7 +35,7 @@ module TestEntity
|
|
33
35
|
|
34
36
|
def test_valid_mbid_from_uri
|
35
37
|
entity = @tested_class.new
|
36
|
-
valid_mbid = Model::MBID.
|
38
|
+
valid_mbid = Model::MBID.parse( '9d30e408-1559-448b-b491-2f8de1583ccf', @tested_class.entity_type )
|
37
39
|
|
38
40
|
assert_equal nil, entity.id
|
39
41
|
assert_nothing_raised {entity.id = valid_mbid.to_s}
|
@@ -43,7 +45,7 @@ module TestEntity
|
|
43
45
|
def test_invalid_mbid_entity_type_not_matching
|
44
46
|
entity = @tested_class.new
|
45
47
|
@invalid_entity_types.each {|type|
|
46
|
-
invalid_mbid = Model::MBID.
|
48
|
+
invalid_mbid = Model::MBID.parse( '9d30e408-1559-448b-b491-2f8de1583ccf', type )
|
47
49
|
assert_raise(Model::EntityTypeNotMatchingError) {entity.id = invalid_mbid}
|
48
50
|
assert_raise(Model::EntityTypeNotMatchingError) {entity.id = invalid_mbid.to_s}
|
49
51
|
}
|
@@ -117,4 +119,21 @@ module TestEntity
|
|
117
119
|
}
|
118
120
|
end
|
119
121
|
|
122
|
+
def test_tags
|
123
|
+
entity = @tested_class.new
|
124
|
+
tag1 = Model::Tag.new('doom metal')
|
125
|
+
tag2 = Model::Tag.new
|
126
|
+
|
127
|
+
assert_equal 0, entity.tags.size
|
128
|
+
assert_nothing_raised {entity.tags << tag1}
|
129
|
+
assert_equal 1, entity.tags.size
|
130
|
+
assert_nothing_raised {entity.tags << tag2}
|
131
|
+
assert_equal 2, entity.tags.size
|
132
|
+
|
133
|
+
assert_nothing_raised {entity.tags.delete tag2}
|
134
|
+
assert_equal 1, entity.tags.size
|
135
|
+
assert_nothing_raised {entity.tags.delete tag1}
|
136
|
+
assert_equal 0, entity.tags.size
|
137
|
+
end
|
138
|
+
|
120
139
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# $Id: test_factory.rb 140 2007-07-17 13:27:54Z 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.
|
7
|
+
|
8
|
+
class MyArtist < Model::Artist
|
9
|
+
end
|
10
|
+
|
11
|
+
class MyLabel < Model::Label
|
12
|
+
end
|
13
|
+
|
14
|
+
class MyRelease < Model::Release
|
15
|
+
end
|
16
|
+
|
17
|
+
class MyTrack < Model::Track
|
18
|
+
end
|
19
|
+
|
20
|
+
class MyAlias < Model::Alias
|
21
|
+
end
|
22
|
+
|
23
|
+
# An alternative model factory for testing purposes.
|
24
|
+
class MyFactory < Model::DefaultFactory
|
25
|
+
|
26
|
+
def new_artist
|
27
|
+
MyArtist.new
|
28
|
+
end
|
29
|
+
|
30
|
+
def new_label
|
31
|
+
MyLabel.new
|
32
|
+
end
|
33
|
+
|
34
|
+
def new_release
|
35
|
+
MyRelease.new
|
36
|
+
end
|
37
|
+
|
38
|
+
def new_track
|
39
|
+
MyTrack.new
|
40
|
+
end
|
41
|
+
|
42
|
+
def new_alias
|
43
|
+
MyAlias.new
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
data/test/lib/testing_helper.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
# $Id: testing_helper.rb
|
2
|
-
#
|
3
|
-
# All rights reserved.
|
4
|
-
# See LICENSE for permissions.
|
5
|
-
|
1
|
+
# $Id: testing_helper.rb 78 2007-06-04 19:47:11Z phw $
|
2
|
+
#
|
6
3
|
# Usefull helper methods which are used in different test classes.
|
4
|
+
#
|
5
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
6
|
+
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
7
|
+
# License:: RBrainz is free software distributed under a BSD style license.
|
8
|
+
# See LICENSE[file:../LICENSE.html] for permissions.
|
7
9
|
|
8
10
|
# Converts a query string into a hash.
|
9
11
|
def query_string_to_hash query_string
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#">
|
3
|
+
<artist id="9ddd7abc-9e1b-471d-8031-583bc6bc8be9" type="Person">
|
4
|
+
<name>Пётр Ильич Чайковский</name>
|
5
|
+
<tag-list>
|
6
|
+
<tag count="100">classical</tag>
|
7
|
+
<tag count="60">russian</tag>
|
8
|
+
<tag count="40">romantic era</tag>
|
9
|
+
<tag count="120">composer</tag>
|
10
|
+
</tag-list>
|
11
|
+
</artist>
|
12
|
+
</metadata>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#">
|
3
|
+
<label id="50c384a2-0b44-401b-b893-8181173339c7" type="OriginalProduction">
|
4
|
+
<name>Atlantic Records</name>
|
5
|
+
<tag-list>
|
6
|
+
<tag>american</tag>
|
7
|
+
<tag>jazz</tag>
|
8
|
+
<tag>blues</tag>
|
9
|
+
</tag-list>
|
10
|
+
</label>
|
11
|
+
</metadata>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#">
|
3
|
+
<release id="d61a2bd9-81ac-4023-bd22-1c884d4a176c" type="Album Official">
|
4
|
+
<title>Highway 61 Revisited</title>
|
5
|
+
<tag-list>
|
6
|
+
<tag count="100">rock</tag>
|
7
|
+
<tag count="40">blues rock</tag>
|
8
|
+
<tag count="40">folk rock</tag>
|
9
|
+
<tag count="4">dylan</tag>
|
10
|
+
</tag-list>
|
11
|
+
</release>
|
12
|
+
</metadata>
|
data/test/test_alias.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
# $Id: test_alias.rb
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# $Id: test_alias.rb 139 2007-07-17 10:02:30Z phw $
|
2
|
+
#
|
3
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
|
+
# Copyright:: Copyright (c) 2007, 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/model'
|
@@ -18,6 +20,10 @@ class TestAlias < Test::Unit::TestCase
|
|
18
20
|
|
19
21
|
def test_new_alias
|
20
22
|
assert_nothing_raised {Model::Alias.new}
|
23
|
+
alias_ = Model::Alias.new('Dark Tranquility', Model::NS_MMD_1 + 'Misspelling', 'Latn')
|
24
|
+
assert_equal 'Dark Tranquility', alias_.name
|
25
|
+
assert_equal Model::NS_MMD_1 + 'Misspelling', alias_.type
|
26
|
+
alias_.script = 'Latn'
|
21
27
|
end
|
22
28
|
|
23
29
|
def test_name
|
@@ -28,8 +34,8 @@ class TestAlias < Test::Unit::TestCase
|
|
28
34
|
|
29
35
|
def test_type
|
30
36
|
alias_ = Model::Alias.new
|
31
|
-
alias_.type = 'Misspelling'
|
32
|
-
assert_equal 'Misspelling', alias_.type
|
37
|
+
alias_.type = Model::NS_MMD_1 + 'Misspelling'
|
38
|
+
assert_equal Model::NS_MMD_1 + 'Misspelling', alias_.type
|
33
39
|
end
|
34
40
|
|
35
41
|
def test_script
|
@@ -42,7 +48,7 @@ class TestAlias < Test::Unit::TestCase
|
|
42
48
|
alias_ = Model::Alias.new
|
43
49
|
assert_equal '', alias_.to_s
|
44
50
|
alias_.name = 'Dark Tranquility'
|
45
|
-
alias_.type = 'Misspelling'
|
51
|
+
alias_.type = Model::NS_MMD_1 + 'Misspelling'
|
46
52
|
alias_.script = 'Latn'
|
47
53
|
assert_equal 'Dark Tranquility', alias_.to_s
|
48
54
|
end
|
data/test/test_artist.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
# $Id: test_artist.rb
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# $Id: test_artist.rb 138 2007-07-17 09:05:01Z phw $
|
2
|
+
#
|
3
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
|
+
# Copyright:: Copyright (c) 2007, 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_entity'
|
7
9
|
|
@@ -25,6 +27,18 @@ class TestArtist < Test::Unit::TestCase
|
|
25
27
|
artist = nil
|
26
28
|
assert_nothing_raised {artist = Model::Artist.new}
|
27
29
|
assert artist.is_a?(Model::Entity)
|
30
|
+
|
31
|
+
mbid = Model::MBID.new('9d30e408-1559-448b-b491-2f8de1583ccf', artist.entity_type)
|
32
|
+
assert_nothing_raised {artist = Model::Artist.new(
|
33
|
+
mbid,
|
34
|
+
Model::Artist::TYPE_GROUP,
|
35
|
+
'The White Stripes',
|
36
|
+
'White Stripes, The'
|
37
|
+
)}
|
38
|
+
assert_equal mbid, artist.id
|
39
|
+
assert_equal Model::Artist::TYPE_GROUP, artist.type
|
40
|
+
assert_equal 'The White Stripes', artist.name
|
41
|
+
assert_equal 'White Stripes, The', artist.sort_name
|
28
42
|
end
|
29
43
|
|
30
44
|
def test_name
|
@@ -48,6 +62,14 @@ class TestArtist < Test::Unit::TestCase
|
|
48
62
|
assert_equal 'Disambiguation comment', artist.disambiguation
|
49
63
|
end
|
50
64
|
|
65
|
+
def test_unique_name
|
66
|
+
artist = Model::Artist.new
|
67
|
+
artist.name = 'Paradise Lost'
|
68
|
+
artist.disambiguation = 'British metal / hard rock band'
|
69
|
+
assert_equal 'Paradise Lost (British metal / hard rock band)', artist.unique_name
|
70
|
+
assert_equal 'Paradise Lost (British metal / hard rock band)', artist.to_s
|
71
|
+
end
|
72
|
+
|
51
73
|
def test_type
|
52
74
|
artist = Model::Artist.new
|
53
75
|
assert artist.type.nil?
|
data/test/test_artist_filter.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
# $Id: test_artist_filter.rb
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# $Id: test_artist_filter.rb 121 2007-07-12 08:56:19Z phw $
|
2
|
+
#
|
3
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
|
+
# Copyright:: Copyright (c) 2007, 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 'testing_helper'
|
@@ -12,9 +14,10 @@ include MusicBrainz
|
|
12
14
|
class TestArtistFilter < Test::Unit::TestCase
|
13
15
|
|
14
16
|
def setup
|
15
|
-
@filter_hash = {:name => 'Tori Amos', :limit => 10
|
17
|
+
@filter_hash = {:name => 'Tori Amos', :limit => 10, :offset => 20,
|
18
|
+
:query => 'alias:Torie Amos AND artype:1'}
|
16
19
|
end
|
17
|
-
|
20
|
+
|
18
21
|
def teardown
|
19
22
|
end
|
20
23
|
|
@@ -26,6 +29,8 @@ class TestArtistFilter < Test::Unit::TestCase
|
|
26
29
|
result_hash = query_string_to_hash filter_string
|
27
30
|
assert_equal @filter_hash[:name], result_hash['name'], filter_string
|
28
31
|
assert_equal @filter_hash[:limit].to_s, result_hash['limit'], filter_string
|
32
|
+
assert_equal @filter_hash[:offset].to_s, result_hash['offset'], filter_string
|
33
|
+
assert_equal @filter_hash[:query].to_s, result_hash['query'], filter_string
|
29
34
|
end
|
30
35
|
|
31
36
|
def test_empty_filter
|
@@ -1,7 +1,9 @@
|
|
1
|
-
# $Id: test_artist_includes.rb
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# $Id: test_artist_includes.rb 118 2007-07-11 22:46:58Z phw $
|
2
|
+
#
|
3
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
|
+
# Copyright:: Copyright (c) 2007, 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'
|
@@ -25,7 +27,8 @@ class TestArtistIncludes < Test::Unit::TestCase
|
|
25
27
|
:label_rels => true,
|
26
28
|
:url_rels => true,
|
27
29
|
:releases => ['Album', 'Official'],
|
28
|
-
:va_releases => ['Album', 'Official']
|
30
|
+
:va_releases => ['Album', 'Official'],
|
31
|
+
:tags => true
|
29
32
|
)
|
30
33
|
result_string = includes.to_s
|
31
34
|
assert_equal 'inc=', result_string[0..3]
|
@@ -41,6 +44,7 @@ class TestArtistIncludes < Test::Unit::TestCase
|
|
41
44
|
assert result_array.include?('sa-Official')
|
42
45
|
assert result_array.include?('va-Album')
|
43
46
|
assert result_array.include?('va-Official')
|
47
|
+
assert result_array.include?('tags')
|
44
48
|
end
|
45
49
|
|
46
50
|
def test_empty_includes
|
@@ -52,7 +56,8 @@ class TestArtistIncludes < Test::Unit::TestCase
|
|
52
56
|
:label_rels => false,
|
53
57
|
:url_rels => false,
|
54
58
|
:releases => [],
|
55
|
-
:va_releases => []
|
59
|
+
:va_releases => [],
|
60
|
+
:tags => false
|
56
61
|
)
|
57
62
|
assert_equal '', includes.to_s
|
58
63
|
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# $Id: test_collection.rb 117 2007-07-11 21:40:05Z phw $
|
2
|
+
#
|
3
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
4
|
+
# Copyright:: Copyright (c) 2007, Philipp Wolfer
|
5
|
+
# License:: RBrainz is free software distributed under a BSD style license.
|
6
|
+
# See LICENSE[file:../LICENSE.html] for permissions.
|
7
|
+
|
8
|
+
require 'test/unit'
|
9
|
+
require 'rbrainz'
|
10
|
+
include MusicBrainz
|
11
|
+
|
12
|
+
# Unit test for the Collection class.
|
13
|
+
class TestCollection < Test::Unit::TestCase
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@artist_one = Model::Artist.new
|
17
|
+
@artist_two = Model::Artist.new
|
18
|
+
@artist_three = Model::Artist.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def teardown
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_collection
|
25
|
+
collection = Model::Collection.new(102, 8)
|
26
|
+
assert_equal 102, collection.count
|
27
|
+
assert_equal 8, collection.offset
|
28
|
+
|
29
|
+
collection.count = 99
|
30
|
+
collection.offset=15
|
31
|
+
assert_equal 99, collection.count
|
32
|
+
assert_equal 15, collection.offset
|
33
|
+
|
34
|
+
assert collection.empty?
|
35
|
+
|
36
|
+
# Fill the collection
|
37
|
+
assert_nothing_raised {
|
38
|
+
collection << @artist_one
|
39
|
+
collection << @artist_two
|
40
|
+
collection << @artist_three
|
41
|
+
}
|
42
|
+
assert_equal 3, collection.size
|
43
|
+
assert !collection.empty?
|
44
|
+
|
45
|
+
# Iterate over the collection
|
46
|
+
n = 0
|
47
|
+
collection.each {|artist|
|
48
|
+
assert artist.is_a?(Model::Artist), artist.inspect
|
49
|
+
n += 1
|
50
|
+
}
|
51
|
+
assert_equal collection.size, n
|
52
|
+
|
53
|
+
# Random access
|
54
|
+
assert_equal @artist_one, collection[0]
|
55
|
+
assert_equal @artist_two, collection[1]
|
56
|
+
assert_equal @artist_three, collection[2]
|
57
|
+
|
58
|
+
# Convert collection to array
|
59
|
+
array = collection.to_a
|
60
|
+
assert_equal Array, array.class
|
61
|
+
assert_equal @artist_one, array[0]
|
62
|
+
assert_equal @artist_two, array[1]
|
63
|
+
assert_equal @artist_three, array[2]
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|