mirror of
https://github.com/beetbox/beets.git
synced 2026-01-09 17:33:51 +01:00
Add MediaFile.fields() method
This commit is contained in:
parent
d116e03bed
commit
b026d60c31
2 changed files with 22 additions and 0 deletions
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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__)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue