@@ -10,7 +10,7 @@ from playlist.data import base
|
||||
|
||||
|
||||
@dataclasses.dataclass
|
||||
class Dummy(base.BaseData["Dummy"]):
|
||||
class Dummy(base.BaseData):
|
||||
"""Dummy class for tests."""
|
||||
|
||||
name: str
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
"""Tests for the playlist.plex.server module."""
|
||||
import asyncio
|
||||
import datetime
|
||||
import unittest.mock
|
||||
|
||||
import pytest
|
||||
|
||||
from playlist.data import models
|
||||
from playlist.data import settings
|
||||
from playlist.plex import server
|
||||
|
||||
@@ -117,14 +119,36 @@ async def test_downloader(mocker): # type: ignore [no-untyped-def]
|
||||
assert process_time >= 0.1
|
||||
|
||||
|
||||
def test_get_track_batch(mocker): # type: ignore [no-untyped-def]
|
||||
@pytest.fixture
|
||||
def fake_trackdict(fake_plextrack): # type: ignore [no-untyped-def]
|
||||
"""Make a fake track dict object."""
|
||||
return models.Track.Dict(
|
||||
plex_id=fake_plextrack.ratingKey,
|
||||
track_num=fake_plextrack.index,
|
||||
title=fake_plextrack.title,
|
||||
artist=fake_plextrack.artist().title,
|
||||
album_num=fake_plextrack.parentIndex,
|
||||
album=fake_plextrack.parentTitle,
|
||||
album_artist=fake_plextrack.grandparentTitle,
|
||||
duration=fake_plextrack.duration,
|
||||
rating=fake_plextrack.userRating,
|
||||
comments=fake_plextrack.summary,
|
||||
added=str(fake_plextrack.addedAt),
|
||||
play_count=fake_plextrack.viewCount,
|
||||
played=str(fake_plextrack.lastViewedAt)
|
||||
if fake_plextrack.lastViewedAt is not None
|
||||
else None,
|
||||
)
|
||||
|
||||
|
||||
def test_get_track_batch(mocker, fake_trackdict): # type: ignore [no-untyped-def]
|
||||
"""Test _get_track_batch function."""
|
||||
mock_plexapi_server = mocker.patch("playlist.plex.server.plexapi.server")
|
||||
mock_server = mock_plexapi_server.PlexServer.return_value
|
||||
mock_search_tracks = mock_server.library.section.return_value.searchTracks
|
||||
mock_search_tracks.return_value = ["Not a track."]
|
||||
mock_track_dump = mocker.patch("playlist.plex.server._track_dump")
|
||||
mock_track_dump.return_value = "Also not a track."
|
||||
mock_track_dump.return_value = fake_trackdict
|
||||
|
||||
result = server._get_track_batch(1, 1)
|
||||
|
||||
@@ -132,8 +156,9 @@ def test_get_track_batch(mocker): # type: ignore [no-untyped-def]
|
||||
assert mock_track_dump.called
|
||||
|
||||
|
||||
def test_track_dump(mocker): # type: ignore [no-untyped-def]
|
||||
"""Test the _track_dump function."""
|
||||
@pytest.fixture
|
||||
def fake_plextrack(): # type: ignore [no-untyped-def]
|
||||
"""Mock up a fake Plex track for testing."""
|
||||
mock_track = unittest.mock.MagicMock()
|
||||
mock_track.configure_mock(
|
||||
ratingKey=1,
|
||||
@@ -145,15 +170,20 @@ def test_track_dump(mocker): # type: ignore [no-untyped-def]
|
||||
duration=1000,
|
||||
userRating=1,
|
||||
summary="Whatever",
|
||||
addedAt="Some time",
|
||||
addedAt=datetime.datetime.now(),
|
||||
viewCount=1,
|
||||
lastViewedAt=None,
|
||||
)
|
||||
mock_track.artist.return_value.title = "Nothing"
|
||||
return mock_track
|
||||
|
||||
result = server._track_dump(mock_track)
|
||||
|
||||
assert isinstance(result, dict)
|
||||
def test_track_dump(fake_plextrack, fake_trackdict): # type: ignore [no-untyped-def]
|
||||
"""Test the _track_dump function."""
|
||||
print(models.Track.Dict.__annotations__)
|
||||
result = server._track_dump(fake_plextrack)
|
||||
|
||||
assert result == fake_trackdict
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
Reference in New Issue
Block a user