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
Beispiel #3
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
Beispiel #6
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/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
Beispiel #7
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
Beispiel #10
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