Skip to content

Commit d1bfde2

Browse files
authored
Merge pull request #8 from joostlek/playback_nullable
Allow playback to be nullable
2 parents aea1902 + c1e0eb6 commit d1bfde2

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/spotifyaio/spotify.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,11 @@ async def _put(self, uri: str, data: dict[str, Any]) -> str:
9393
"""Handle a PUT request to Spotify."""
9494
return await self._request(METH_PUT, uri, data=data)
9595

96-
async def get_playback(self) -> PlaybackState:
96+
async def get_playback(self) -> PlaybackState | None:
9797
"""Get playback state."""
9898
response = await self._get("v1/me/player")
99+
if response == "":
100+
return None
99101
return PlaybackState.from_json(response)
100102

101103
async def transfer_playback(self, device_id: str) -> None:

tests/__snapshots__/test_playback.ambr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# serializer version: 1
2-
# name: test_get_devices
2+
# name: test_get_playback_state
33
dict({
44
'context': dict({
55
'context_type': <ContextType.COLLECTION: 'collection'>,

tests/test_playback.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from .const import SPOTIFY_URL
1212

1313

14-
async def test_get_devices(
14+
async def test_get_playback_state(
1515
aresponses: ResponsesMockServer,
1616
snapshot: SnapshotAssertion,
1717
) -> None:
@@ -34,6 +34,27 @@ async def test_get_devices(
3434
await spotify.close()
3535

3636

37+
async def test_get_no_playback_state(
38+
aresponses: ResponsesMockServer,
39+
) -> None:
40+
"""Test retrieving devices."""
41+
aresponses.add(
42+
SPOTIFY_URL,
43+
"/v1/me/player",
44+
METH_GET,
45+
aresponses.Response(
46+
status=204,
47+
headers={"Content-Type": "application/json"},
48+
),
49+
)
50+
async with aiohttp.ClientSession() as session:
51+
spotify = SpotifyClient(session=session)
52+
spotify.authenticate("test")
53+
response = await spotify.get_playback()
54+
assert response is None
55+
await spotify.close()
56+
57+
3758
async def test_transfer_playback(
3859
aresponses: ResponsesMockServer,
3960
) -> None:

0 commit comments

Comments
 (0)