rbrainz 0.1.1 → 0.2.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/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
|