Add MediaFile.fields() method

This commit is contained in:
Thomas Scholtes 2014-04-02 23:08:15 +02:00
parent d116e03bed
commit b026d60c31
2 changed files with 22 additions and 0 deletions

View file

@ -1256,6 +1256,14 @@ class MediaFile(object):
for tag in self.mgfile.keys():
del self.mgfile[tag]
@classmethod
def fields(cls):
"""Yield the names of all properties that are MediaFields.
"""
for property, descriptor in cls.__dict__.items():
if isinstance(descriptor, MediaField):
yield property
# Field definitions.

View file

@ -692,6 +692,20 @@ class OpusTest(ReadWriteTestBase, unittest.TestCase):
}
class MediaFieldTest(unittest.TestCase):
def test_properties_from_fields(self):
path = os.path.join(_common.RSRC, 'full.mp3')
mediafile = MediaFile(path)
for field in MediaFile.fields():
self.assertTrue(hasattr(mediafile, field))
def test_known_fields(self):
fields = ReadWriteTestBase.empty_tags.keys()
fields.extend(('encoder', 'images', 'genres', 'albumtype'))
self.assertItemsEqual(MediaFile.fields(), fields)
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)