Add Sonos Test for plex media player enqueue options (#124120)
initial commit
This commit is contained in:
parent
7efd8089c8
commit
153eef16bb
1 changed files with 49 additions and 1 deletions
|
@ -8,17 +8,24 @@ import pytest
|
|||
from homeassistant.components.media_player import (
|
||||
ATTR_MEDIA_CONTENT_ID,
|
||||
ATTR_MEDIA_CONTENT_TYPE,
|
||||
ATTR_MEDIA_ENQUEUE,
|
||||
DOMAIN as MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
MediaPlayerEnqueue,
|
||||
MediaType,
|
||||
)
|
||||
from homeassistant.components.plex import DOMAIN as PLEX_DOMAIN, PLEX_URI_SCHEME
|
||||
from homeassistant.components.sonos.media_player import LONG_SERVICE_TIMEOUT
|
||||
from homeassistant.const import ATTR_ENTITY_ID
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
|
||||
from .conftest import MockSoCo
|
||||
|
||||
async def test_plex_play_media(hass: HomeAssistant, async_autosetup_sonos) -> None:
|
||||
|
||||
async def test_plex_play_media(
|
||||
hass: HomeAssistant, soco: MockSoCo, async_autosetup_sonos
|
||||
) -> None:
|
||||
"""Test playing media via the Plex integration."""
|
||||
mock_plex_server = Mock()
|
||||
mock_lookup = mock_plex_server.lookup_media
|
||||
|
@ -55,6 +62,9 @@ async def test_plex_play_media(hass: HomeAssistant, async_autosetup_sonos) -> No
|
|||
assert not mock_shuffle.called
|
||||
assert mock_lookup.mock_calls[0][1][0] == MediaType.MUSIC
|
||||
assert mock_lookup.mock_calls[0][2] == json.loads(media_content_id)
|
||||
assert soco.clear_queue.call_count == 1
|
||||
assert soco.play_from_queue.call_count == 1
|
||||
soco.play_from_queue.assert_called_with(0)
|
||||
|
||||
# Test handling shuffle in payload
|
||||
mock_lookup.reset_mock()
|
||||
|
@ -130,3 +140,41 @@ async def test_plex_play_media(hass: HomeAssistant, async_autosetup_sonos) -> No
|
|||
assert mock_shuffle.called
|
||||
assert mock_lookup.mock_calls[0][1][0] == PLEX_DOMAIN
|
||||
assert mock_lookup.mock_calls[0][2] == {"plex_key": plex_item_key}
|
||||
|
||||
mock_add_to_queue.reset_mock()
|
||||
await hass.services.async_call(
|
||||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
ATTR_ENTITY_ID: media_player,
|
||||
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
|
||||
ATTR_MEDIA_CONTENT_ID: f"{PLEX_URI_SCHEME}{media_content_id}",
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.ADD,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
assert mock_add_to_queue.call_count == 1
|
||||
mock_add_to_queue.assert_called_with(
|
||||
mock_lookup(), timeout=LONG_SERVICE_TIMEOUT
|
||||
)
|
||||
|
||||
soco.play_from_queue.reset_mock()
|
||||
mock_add_to_queue.reset_mock()
|
||||
mock_add_to_queue.return_value = 9
|
||||
await hass.services.async_call(
|
||||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
ATTR_ENTITY_ID: media_player,
|
||||
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
|
||||
ATTR_MEDIA_CONTENT_ID: f"{PLEX_URI_SCHEME}{media_content_id}",
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.PLAY,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
assert mock_add_to_queue.call_count == 1
|
||||
mock_add_to_queue.assert_called_with(
|
||||
mock_lookup(), position=1, timeout=LONG_SERVICE_TIMEOUT
|
||||
)
|
||||
assert soco.play_from_queue.call_count == 1
|
||||
soco.play_from_queue.assert_called_with(mock_add_to_queue.return_value - 1)
|
||||
|
|
Loading…
Add table
Reference in a new issue