Skip to content

Commit

Permalink
Add tests for the play queue methods
Browse files Browse the repository at this point in the history
  • Loading branch information
kutu-dev committed Aug 10, 2023
1 parent 40dd1c9 commit a17035e
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 5 deletions.
35 changes: 34 additions & 1 deletion tests/api/test_bookmarks.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

import responses
from dateutil import parser
from knuckles import Subsonic
from responses import Response

from knuckles import Subsonic


@responses.activate
def test_get_bookmarks(
Expand Down Expand Up @@ -77,3 +78,35 @@ def test_delete_bookmark(
response = subsonic.bookmarks.delete_bookmark(song["id"])

assert type(response) == Subsonic


@responses.activate
def test_get_play_queue(
subsonic: Subsonic,
mock_get_play_queue: Response,
username: str,
song: dict[str, Any],
play_queue: dict[str, Any],
client: str,
) -> None:
responses.add(mock_get_play_queue)

response = subsonic.bookmarks.get_play_queue()

assert response.user.username == username
assert response.current.id == song["id"]
assert response.changed == parser.parse(play_queue["changed"])
assert response.changed_by == client
assert response.songs[0].id == song["id"]


@responses.activate
def test_save_play_queue(
subsonic: Subsonic,
mock_save_play_queue: Response,
song: dict[str, Any],
play_queue: dict[str, Any],
) -> None:
responses.add(mock_save_play_queue)

subsonic.bookmarks.save_play_queue([song["id"]], song["id"], play_queue["position"])
31 changes: 30 additions & 1 deletion tests/mocks/bookmarks.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,35 @@ def mock_create_bookmark(

@pytest.fixture
def mock_delete_bookmark(
mock_generator: MockGenerator, song: dict[str, Any], bookmark: dict[str, Any]
mock_generator: MockGenerator, song: dict[str, Any]
) -> Response:
return mock_generator("deleteBookmark", {"id": song["id"]})


@pytest.fixture
def play_queue(song: dict[str, Any], username: str, client: str) -> dict[str, Any]:
return {
"entry": [song],
"current": song["id"],
"position": 18283,
"username": username,
"changed": "2023-06-19T08:04:36.238963605Z",
"changedBy": client,
}


@pytest.fixture
def mock_get_play_queue(
mock_generator: MockGenerator, play_queue: dict[str, Any]
) -> Response:
return mock_generator("getPlayQueue", {}, {"playQueue": play_queue})


@pytest.fixture
def mock_save_play_queue(
mock_generator: MockGenerator, song: dict[str, Any], play_queue: dict[str, Any]
) -> Response:
return mock_generator(
"savePlayQueue",
{"id": song["id"], "current": song["id"], "position": play_queue["position"]},
)
6 changes: 3 additions & 3 deletions tests/models/test_song.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

import pytest
import responses
from knuckles import Song, Subsonic
from responses import Response

from knuckles import Song, Subsonic
from tests.conftest import MockGenerator


Expand All @@ -17,7 +17,7 @@ def test_generate(
) -> None:
responses.add(mock_get_song)

requested_song: Song = subsonic.browsing.get_song(song["id"])
requested_song = subsonic.browsing.get_song(song["id"])
requested_song.title = "Foo"
requested_song = requested_song.generate()

Expand All @@ -34,7 +34,7 @@ def test_song_star(
responses.add(mock_get_song)
responses.add(mock_star_song)

requested_song: Song = subsonic.browsing.get_song(song["id"])
requested_song = subsonic.browsing.get_song(song["id"])

assert type(requested_song.star()) is Song

Expand Down
36 changes: 36 additions & 0 deletions tests/models/test_song_queue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from typing import Any

import responses
from knuckles import Subsonic
from responses import Response


@responses.activate
def test_generate(
subsonic: Subsonic,
mock_get_play_queue: Response,
username: dict[str, Any],
) -> None:
responses.add(mock_get_play_queue)

requested_queue = subsonic.bookmarks.get_play_queue()
requested_queue.username = "Foo"
requested_queue = requested_queue.generate()

assert requested_queue.user.username == username


@responses.activate
def test_save(
subsonic: Subsonic,
mock_get_play_queue: Response,
mock_save_play_queue: Response,
) -> None:
responses.add(mock_get_play_queue)
responses.add(mock_save_play_queue)

requested_queue = subsonic.bookmarks.get_play_queue()
requested_queue = requested_queue.save()

assert True is False
# assert type(requested_queue) is PlayQueue

0 comments on commit a17035e

Please sign in to comment.