import os import shutil import mutagen import pytest from symuid._tag_interface import ID3 @pytest.fixture def empty_id3_iface(tmpdir, tracks_dir_path): path = tmpdir.join('empty.mp3').strpath shutil.copyfile( src=os.path.join(tracks_dir_path, 'id3v2.4-empty.mp3'), dst=path, ) return ID3(mutagen.File(path)) @pytest.mark.parametrize('track_name', ['id3v2.4-empty.mp3']) def test_get_track_path(tracks_dir_path, track_name): track_path = os.path.join(tracks_dir_path, track_name) iface = ID3(mutagen.File(track_path)) assert track_path == iface.track_path @pytest.mark.parametrize(('track_name', 'tag_label', 'expected_text'), [ ('id3v2.4-empty.mp3', 'TPE1', None), ('id3v2.4-typical.mp3', 'TPE1', 'some artist'), ('id3v2.4-typical.mp3', 'COMM::eng', 'some comment'), ('id3v2.4-typical.mp3', 'COMM', None), ]) def test__get_single_text(tracks_dir_path, track_name, tag_label, expected_text): iface = ID3(mutagen.File(os.path.join(tracks_dir_path, track_name))) assert expected_text == iface._get_single_text(tag_label) @pytest.mark.parametrize(('track_name', 'expected_comment'), [ ('id3v2.4-empty.mp3', None), ('id3v2.4-typical.mp3', 'some comment'), ]) def test_get_comment(tracks_dir_path, track_name, expected_comment): iface = ID3(mutagen.File(os.path.join(tracks_dir_path, track_name))) assert expected_comment == iface.get_comment() def test_set_comment(empty_id3_iface): assert empty_id3_iface.get_comment() is None empty_id3_iface.set_comment('latin') assert empty_id3_iface.get_comment() == 'latin' empty_id3_iface.set_comment('你好') assert empty_id3_iface.get_comment() == '你好' empty_id3_iface.save() tags = mutagen.File(empty_id3_iface.track_path).tags assert len(tags) == 1 tag = tags.values()[0] assert isinstance(tag, mutagen.id3.COMM) assert tag.lang == 'eng' assert tag.text == ['你好']