mirror of
				https://github.com/KevinMidboe/spotify-downloader.git
				synced 2025-10-29 18:00:15 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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')
 | |
| 
 | |
| 
 | |
| duplicate_tracks_test_table = [
 | |
|     (('https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ',
 | |
|       'https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ'),
 | |
|      ('https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ',)),
 | |
| 
 | |
|     (('https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ',
 | |
|       '',
 | |
|       'https://open.spotify.com/track/3SipFlNddvL0XNZRLXvdZD'),
 | |
|      ('https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ',
 | |
|       'https://open.spotify.com/track/3SipFlNddvL0XNZRLXvdZD')),
 | |
| 
 | |
|     (('ncs fade',
 | |
|       'https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ',
 | |
|       '',
 | |
|       'ncs fade'),
 | |
|      ('ncs fade',
 | |
|       'https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ')),
 | |
| 
 | |
|     (('ncs spectre ',
 | |
|       '  https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ',
 | |
|       ''),
 | |
|      ('ncs spectre',
 | |
|       'https://open.spotify.com/track/2DGa7iaidT5s0qnINlwMjJ'))
 | |
| ]
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize("duplicates, expected", duplicate_tracks_test_table)
 | |
| def test_get_unique_tracks(tmpdir, duplicates, expected):
 | |
|     file_path = os.path.join(str(tmpdir), 'test_duplicates.txt')
 | |
|     with open(file_path, 'w') as tin:
 | |
|         tin.write('\n'.join(duplicates))
 | |
| 
 | |
|     unique_tracks = internals.get_unique_tracks(file_path)
 | |
|     assert tuple(unique_tracks) == expected
 |