test_id3.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import os
  2. import mutagen
  3. import pytest
  4. from symuid._tag_interface import ID3
  5. # pylint: disable=protected-access
  6. @pytest.mark.parametrize('track_name', ['id3v2.4-empty.mp3'])
  7. def test_get_track_path(tracks_dir_path, track_name):
  8. track_path = os.path.join(tracks_dir_path, track_name)
  9. iface = ID3(mutagen.File(track_path))
  10. assert track_path == iface.track_path
  11. @pytest.mark.parametrize(('track_name', 'tag_label', 'expected_text'), [
  12. ('id3v2.4-empty.mp3', 'TPE1', None),
  13. ('id3v2.4-typical.mp3', 'TPE1', 'some artist'),
  14. ('id3v2.4-typical.mp3', 'COMM::eng', 'some comment'),
  15. ('id3v2.4-typical.mp3', 'COMM', None),
  16. ])
  17. def test__get_single_text(tracks_dir_path, track_name, tag_label, expected_text):
  18. iface = ID3(mutagen.File(os.path.join(tracks_dir_path, track_name)))
  19. assert expected_text == iface._get_single_text(tag_label)
  20. @pytest.mark.parametrize(('track_name', 'expected_comment'), [
  21. ('id3v2.4-empty.mp3', None),
  22. ('id3v2.4-typical.mp3', 'some comment'),
  23. ])
  24. def test_get_comment(tracks_dir_path, track_name, expected_comment):
  25. iface = ID3(mutagen.File(os.path.join(tracks_dir_path, track_name)))
  26. assert expected_comment == iface.get_comment()
  27. def test_set_comment(empty_id3_path):
  28. empty_id3_iface = ID3(mutagen.File(empty_id3_path))
  29. assert empty_id3_iface.get_comment() is None
  30. empty_id3_iface.set_comment('latin')
  31. assert empty_id3_iface.get_comment() == 'latin'
  32. empty_id3_iface.set_comment('你好')
  33. assert empty_id3_iface.get_comment() == '你好'
  34. empty_id3_iface.save()
  35. tags = mutagen.File(empty_id3_iface.track_path).tags
  36. assert len(tags) == 1
  37. tag = tags.values()[0]
  38. assert isinstance(tag, mutagen.id3.COMM)
  39. assert tag.lang == 'eng'
  40. assert tag.text == ['你好']