from spotdl import internals import sys import os import subprocess import pytest def test_default_music_directory(): if sys.platform.startswith('linux'): output = subprocess.check_output(['xdg-user-dir', 'MUSIC']) expect_directory = output.decode('utf-8').rstrip() else: home = os.path.expanduser('~') expect_directory = os.path.join(home, 'Music') directory = internals.get_music_dir() assert directory == expect_directory class TestPathFilterer: def test_create_directory(self, tmpdir): expect_path = True global folder_path folder_path = os.path.join(str(tmpdir), 'filter_this_folder') internals.filter_path(folder_path) is_path = os.path.isdir(folder_path) assert is_path == expect_path def test_remove_temp_files(self, tmpdir): expect_file = False file_path = os.path.join(folder_path, 'pesky_file.temp') open(file_path, 'a') internals.filter_path(folder_path) is_file = os.path.isfile(file_path) assert is_file == expect_file class TestVideoTimeFromSeconds: def test_from_seconds(self): expect_duration = '35' duration = internals.videotime_from_seconds(35) assert duration == expect_duration def test_from_minutes(self): expect_duration = '2:38' duration = internals.videotime_from_seconds(158) assert duration == expect_duration def test_from_hours(self): expect_duration = '1:16:02' duration = internals.videotime_from_seconds(4562) assert duration == expect_duration class TestGetSeconds: def test_from_seconds(self): expect_secs = 45 secs = internals.get_sec('0:45') assert secs == expect_secs secs = internals.get_sec('0.45') assert secs == expect_secs def test_from_minutes(self): expect_secs = 213 secs = internals.get_sec('3.33') assert secs == expect_secs secs = internals.get_sec('3:33') assert secs == expect_secs def test_from_hours(self): expect_secs = 5405 secs = internals.get_sec('1.30.05') assert secs == expect_secs secs = internals.get_sec('1:30:05') assert secs == expect_secs def test_raise_error(self): with pytest.raises(ValueError): internals.get_sec('10*05') with pytest.raises(ValueError): internals.get_sec('02,28,46')