import unittest
-from sima.lib.meta import Meta, Artist, MetaContainer, is_uuid4
-from sima.lib.meta import WrongUUID4, MetaException
+from sima.lib.meta import Meta, Artist, Album, MetaContainer, is_uuid4
+from sima.lib.meta import MetaException, SEPARATOR
VALID = '110e8100-e29b-41d1-a716-116655250000'
def test_uuid_integrity(self):
wrong = VALID +'a'
- self.assertRaises(WrongUUID4, is_uuid4, wrong)
+ self.assertFalse(is_uuid4(wrong))
# test UUID4 format validation
- self.assertRaises(WrongUUID4, is_uuid4, VALID.replace('4', '3'))
- self.assertRaises(WrongUUID4, is_uuid4, VALID.replace('a', 'z'))
+ self.assertFalse(is_uuid4(VALID.replace('a', 'z')))
def test_init(self):
for args in [
{'mbid':VALID},
{'name': None},
- {},
+ {'name': 42},
]:
with self.assertRaises(MetaException,
msg='{} does not raise an except.'.format(args)):
# test equality Obj.__name with OgjBis.__aliases
self.assertTrue(art0 == Meta(name='A Silver Mt. Zion'))
+ art1 = Meta(name='Silver Mt. Zion')
+ art1.add_alias(art0)
+ self.assertIn('A Silver Mt. Zion', art1.aliases)
+
+ art3 = Meta(name='foo')
+ art3.add_alias('Silver Mt. Zion')
+ art1.add_alias(art3)
+ self.assertNotIn('Silver Mt. Zion', art1.aliases)
+
def test_union(self):
art00 = Meta(name='Aphex Twin',
mbid='f22942a1-6f70-4f48-866e-238cb2308fbd')
art10._Meta__mbid = None
self.assertTrue(art01 == art10, 'wrong: %r != %r' % (art00, art01))
+ def test_mpd_serialization(self):
+ """Controls serialization of names"""
+ name = "Heaven's Door"
+ heavens_door = Meta(name=name)
+ target = r"Heaven\'s Door"
+ self.assertEqual(heavens_door.name_sz, target)
+ self.assertEqual(heavens_door.name, name)
+ self.assertEqual(heavens_door.names_sz, {target})
+ heavens_door.add_alias(name+" LP")
+ self.assertEqual(heavens_door.aliases_sz, {target+" LP"})
+ # Controls inheritance
+ heavens_door = Album(name=name)
+ self.assertEqual(heavens_door.name_sz, target)
+ heavens_door = Artist(name=name)
+ self.assertEqual(heavens_door.name_sz, target)
+ # Same with double quote
+ name = 'Bonnie "Prince" Billy'
+ bonnie = Meta(name=name)
+ target = r"Bonnie \"Prince\" Billy"
+ self.assertEqual(bonnie.name_sz, target)
+ self.assertEqual(bonnie.name, name)
+
+
class TestArtistObject(unittest.TestCase):
def test_init(self):
- artist = {'artist': ', '.join(['Original Name', 'Featuring Nane', 'Featureā¦']),
+ artist = {'artist':
+ SEPARATOR.join(['Original Name', 'Featuring Nane', 'Featureā¦']),
'albumartist': 'Name',
- 'musicbrainz_artistid': VALID,
- 'musicbrainz_albumartistid': VALID.replace('11', '22'),
+ 'musicbrainz_artistid':
+ SEPARATOR.join([VALID, VALID.replace('0000', '1312')]),
}
art = Artist(**artist)
- self.assertTrue(art.name == 'Name')
- self.assertTrue(art.mbid == VALID.replace('11', '22'))
- artist.pop('musicbrainz_albumartistid')
- art = Artist(**artist)
- self.assertTrue(art.mbid == VALID)
+ self.assertEqual(art.name, 'Original Name')
+ self.assertEqual(art.mbid, VALID)
+ self.assertEqual(art.albumartist, artist['albumartist'])
artist.pop('albumartist')
art = Artist(**artist)
- self.assertTrue(art.name == 'Original Name', art.name)
+ self.assertEqual(art.name, 'Original Name')
+ self.assertEqual(art.albumartist, 'Original Name')
+ def test_empty_name(self):
+ for args in [
+ {'mbid': VALID},
+ {'name': None},
+ {},
+ ]:
+ with self.assertRaises(MetaException,
+ msg='{} does not raise an except.'.format(args)):
+ Artist(**args)
class TestMetaContainers(unittest.TestCase):