Typeguard now happy.

Signed-off-by: Cliff Hill <xlorep@darkhelm.org>
This commit is contained in:
2021-10-04 15:09:23 -04:00
parent 8ce13a8ccf
commit b2ee83fee7
8 changed files with 65 additions and 31 deletions

View File

@@ -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

View File

@@ -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