+ self.assertTrue(art.name == 'Original Name', art.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):
+
+ def test_init(self):
+ a = Meta(mbid=VALID, name='a')
+ b = Meta(mbid=VALID, name='b')
+ c = Meta(mbid=VALID.replace('11', '22'), name='b')
+ # redondant with Meta test_comparison, but anyway
+ cont = MetaContainer([a, b, c])
+ self.assertTrue(len(cont) == 2)
+ self.assertTrue(a in cont)
+ self.assertTrue(b in cont)
+ self.assertTrue(Meta(name='a') in cont)
+
+ def test_intersection_difference(self):
+ # Now set works as expected with composite (name/mbid) collections of Meta
+ # cf Meta test_union
+ # >>> len(MetaContainer([Artist(name='Name'), Artist(name='Name', mbid=<UUID4>)]) == 1
+ # but
+ # >>> len({Artist(name='Name'), Artist(name='Name', mbid=<UUID4>}) == 2
+ art00 = Meta(name='Aphex Twin', mbid='f22942a1-6f70-4f48-866e-238cb2308fbd')
+ art01 = Meta(name='Aphex Twin', mbid=None)
+ self.assertTrue(MetaContainer([art00]) & MetaContainer([art01]))
+ self.assertFalse(MetaContainer([art01]) - MetaContainer([art01]))
+ art01._Meta__mbid = art00.mbid
+ self.assertTrue(MetaContainer([art00]) & MetaContainer([art01]))
+ self.assertFalse(MetaContainer([art01]) - MetaContainer([art01]))
+ art01._Meta__mbid = art00.mbid.replace('229', '330')
+ self.assertFalse(MetaContainer([art00]) & MetaContainer([art01]))