def test_download_a_single_song(capsys, patch_dependencies, monkeypatch): """First example from the help - using the track url should trigger song download.""" monkeypatch.setattr( sys, "argv", [ "dummy", "https://open.spotify.com/track/08mG3Y1vljYA6bvDt4Wqkj?si=SxezdxmlTx-CaVoucHmrUA", ], ) console_entry_point() out, err = capsys.readouterr() assert "Fetching Song...\n" in out assert DownloadManager.download_single_song.call_count == 1 assert DownloadManager.download_multiple_songs.call_count == 0
def test_download_an_album(capsys, patch_dependencies, monkeypatch): """Second example - download whole album.""" monkeypatch.setattr( sys, "argv", [ "dummy", "https://open.spotify.com/album/2YMWspDGtbDgYULXvVQFM6?si=gF5dOQm8QUSo-NdZVsFjAQ", ], ) console_entry_point() out, err = capsys.readouterr() assert "Fetching Album...\n" in out assert DownloadManager.download_multiple_songs.call_count == 1 assert DownloadManager.download_single_song.call_count == 0
def test_search_and_download(capsys, patch_dependencies, monkeypatch): """Fourth example - search for a song, which cannot be found.""" monkeypatch.setattr( sys, "argv", [ "dummy", "The HU - Sugaan Essenna", ], ) console_entry_point() out, err = capsys.readouterr() assert ( out == 'Searching for song "The HU - Sugaan Essenna"...\n' 'No song named "The HU - Sugaan Essenna" could be found on spotify\n') assert DownloadManager.download_multiple_songs.call_count == 0 assert DownloadManager.download_single_song.call_count == 0
def test_search_and_download(capsys, patch_dependencies, monkeypatch): """Fourth example - search for a song, which cannot be found.""" monkeypatch.setattr( sys, "argv", [ "dummy", "The HU - Sugaan Essenna", ], ) # with pytest.raises(Exception, match="No song matches found on Spotify"): console_entry_point() out, err = capsys.readouterr() assert out == ('Searching for song "The HU - Sugaan Essenna"...\n' 'No song matches found on Spotify\n') assert DownloadManager.download_multiple_songs.call_count == 0 assert DownloadManager.download_single_song.call_count == 0
def test_multiple_elements(capsys, patch_dependencies, monkeypatch): """Last example - chaining tasks. Download two songs and search for one.""" monkeypatch.setattr( sys, "argv", [ "dummy", "https://open.spotify.com/track/08mG3Y1vljYA6bvDt4Wqkj?si=SxezdxmlTx-CaVoucHmrUA", "https://open.spotify.com/track/2SiXAy7TuUkycRVbbWDEpo", "The HU - Sugaan Essenna", ], ) console_entry_point() out, err = capsys.readouterr() assert "Fetching Song...\n" in out assert ( "Gathering Spotify Metadata for: https://open.spotify.com/track/08mG3Y1vljYA6bvDt4Wqkj?si=SxezdxmlTx-CaVoucHmrUA\n" in out ) assert ( 'Found YouTube URL for "AC/DC - Back In Black" : https://www.youtube.com/watch?v=9vWNauaZAgg\n' in out ) assert "Fetching Song...\n" in out assert ( "Gathering Spotify Metadata for: https://open.spotify.com/track/2SiXAy7TuUkycRVbbWDEpo\n" in out ) assert ( 'Found YouTube URL for "AC/DC - You Shook Me All Night Long" : https://www.youtube.com/watch?v=SP9t2Iq_zQ8\n' in out ) assert 'Searching Spotify for song named "The HU - Sugaan Essenna"...\n' in out assert "No song matches found on Spotify\n" in out assert DownloadManager.download_single_song.call_count == 0 assert DownloadManager.download_multiple_songs.call_count == 1
def test_download_a_playlist(capsys, patch_dependencies, monkeypatch): """ Third example - download a playlist. The playlist URL is different from the example, as the original one was to big. """ monkeypatch.setattr( sys, "argv", [ "dummy", "https://open.spotify.com/playlist/37i9dQZF1DX1vrY9HPZioH", ], ) console_entry_point() out, err = capsys.readouterr() assert out == "Fetching Playlist...\n" assert DownloadManager.download_multiple_songs.call_count == 1 assert DownloadManager.download_single_song.call_count == 0
def test_use_tracking_file(capsys, patch_dependencies, monkeypatch, fs): """Fifth example - use a spotdlTrackingFile.""" fs.create_file("Back In Black.spotdlTrackingFile", contents=json.dumps(tracking_files.back_in_black)) monkeypatch.setattr( sys, "argv", [ "dummy", "Back In Black.spotdlTrackingFile", ], ) console_entry_point() out, err = capsys.readouterr() assert out == 'Preparing to resume download...\n' assert DownloadManager.resume_download_from_tracking_file.call_count == 1 assert DownloadManager.download_multiple_songs.call_count == 0 assert DownloadManager.download_single_song.call_count == 0
def test_multiple_elements(capsys, patch_dependencies, monkeypatch): """Last example - chaining tasks. Download two songs and search for one.""" monkeypatch.setattr( sys, "argv", [ "dummy", "https://open.spotify.com/track/08mG3Y1vljYA6bvDt4Wqkj?si=SxezdxmlTx-CaVoucHmrUA", "https://open.spotify.com/track/2SiXAy7TuUkycRVbbWDEpo", "The HU - Sugaan Essenna", ], ) console_entry_point() out, err = capsys.readouterr() assert 'Fetching Song...\n' in out assert 'Searching for song "The HU - Sugaan Essenna"...\n' in out assert 'No song matches found on Spotify\n' in out assert DownloadManager.download_single_song.call_count == 2 assert DownloadManager.download_multiple_songs.call_count == 0
def test_download_a_playlist(capsys, patch_dependencies, monkeypatch): """ Third example - download a playlist. The playlist URL is different from the example, as the original one was to big. """ monkeypatch.setattr( sys, "argv", [ "dummy", "https://open.spotify.com/playlist/0slbokxiWCo9egF9UhVmmI", "--search-threads=1", ], ) console_entry_point() out, err = capsys.readouterr() assert "Fetching Playlist...\n" in out assert DownloadManager.download_multiple_songs.call_count == 1 assert DownloadManager.download_single_song.call_count == 0
def test_multiple_elements(capsys, patch_dependencies, monkeypatch): """Last example - chaining tasks. Download two songs and search for one.""" monkeypatch.setattr( sys, "argv", [ "dummy", "https://open.spotify.com/track/4EWCNWgDS8707fNSZ1oaA5", "https://open.spotify.com/track/2SiXAy7TuUkycRVbbWDEpo", "The HU - Sugaan Essenna", ], ) console_entry_point() out, err = capsys.readouterr() assert "Fetching Song...\n" in out assert ( "Gathering Spotify Metadata for: https://open.spotify.com/track/4EWCNWgDS8707fNSZ1oaA5\n" in out) assert ( 'Found YouTube URL for "Kanye West - Heartless" : https://www.youtube.com/watch?v=s40BTpfAELs\n' in out) assert "Fetching Song...\n" in out assert ( "Gathering Spotify Metadata for: https://open.spotify.com/track/2SiXAy7TuUkycRVbbWDEpo\n" in out) assert ( 'Found YouTube URL for "AC/DC - You Shook Me All Night Long" : https://www.youtube.com/watch?v=SP9t2Iq_zQ8\n' in out) assert 'Searching Spotify for song named "The HU - Sugaan Essenna"...\n' in out assert "No song matches found on Spotify\n" in out assert DownloadManager.download_single_song.call_count == 0 assert DownloadManager.download_multiple_songs.call_count == 1