]> kaliko git repositories - mpd-sima.git/blobdiff - tests/test_meta.py
test: pylint on python 3.11
[mpd-sima.git] / tests / test_meta.py
index cf55a0e34f7e01488fc1193da3db29529b9c0feb..b8a36b5717c1d40da7c8bf0ec18abceb7d980c94 100644 (file)
@@ -2,27 +2,24 @@
 
 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'
+VALID = '110e8100-e29b-41d1-a716-116655250000'
 
 class TestMetaObject(unittest.TestCase):
 
     def test_uuid_integrity(self):
-        Meta(mbid=VALID, name='test')
-        Meta(mbid=VALID.lower(), name='test')
         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)):
@@ -31,7 +28,7 @@ class TestMetaObject(unittest.TestCase):
     def test_equality(self):
         a = Meta(mbid=VALID, name='a')
         b = Meta(mbid=VALID, name='b')
-        c = Meta(mbid=VALID.lower(), name='c')
+        c = Meta(mbid=VALID.upper(), name='c')
         self.assertEqual(a, b)
         self.assertEqual(a, c)
 
@@ -59,6 +56,15 @@ class TestMetaObject(unittest.TestCase):
         # 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')
@@ -104,25 +110,57 @@ class TestMetaObject(unittest.TestCase):
         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):