Use constants in Sonos media player tests (#124037)
This commit is contained in:
parent
69700f068f
commit
1614e2c825
1 changed files with 76 additions and 69 deletions
|
@ -7,7 +7,13 @@ from unittest.mock import patch
|
|||
import pytest
|
||||
|
||||
from homeassistant.components.media_player import (
|
||||
ATTR_INPUT_SOURCE,
|
||||
ATTR_MEDIA_CONTENT_ID,
|
||||
ATTR_MEDIA_CONTENT_TYPE,
|
||||
ATTR_MEDIA_ENQUEUE,
|
||||
ATTR_MEDIA_REPEAT,
|
||||
ATTR_MEDIA_SHUFFLE,
|
||||
ATTR_MEDIA_VOLUME_LEVEL,
|
||||
DOMAIN as MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
|
@ -26,6 +32,7 @@ from homeassistant.components.sonos.media_player import (
|
|||
VOLUME_INCREMENT,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
ATTR_ENTITY_ID,
|
||||
SERVICE_REPEAT_SET,
|
||||
SERVICE_SHUFFLE_SET,
|
||||
SERVICE_VOLUME_DOWN,
|
||||
|
@ -176,9 +183,9 @@ async def test_play_media_library(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": media_content_type,
|
||||
"media_content_id": media_content_id,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: media_content_type,
|
||||
ATTR_MEDIA_CONTENT_ID: media_content_id,
|
||||
ATTR_MEDIA_ENQUEUE: enqueue,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -225,9 +232,9 @@ async def test_play_media_lib_track_play(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "track",
|
||||
"media_content_id": _track_url,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "track",
|
||||
ATTR_MEDIA_CONTENT_ID: _track_url,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.PLAY,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -254,9 +261,9 @@ async def test_play_media_lib_track_next(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "track",
|
||||
"media_content_id": _track_url,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "track",
|
||||
ATTR_MEDIA_CONTENT_ID: _track_url,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.NEXT,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -282,9 +289,9 @@ async def test_play_media_lib_track_replace(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "track",
|
||||
"media_content_id": _track_url,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "track",
|
||||
ATTR_MEDIA_CONTENT_ID: _track_url,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.REPLACE,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -305,9 +312,9 @@ async def test_play_media_lib_track_add(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "track",
|
||||
"media_content_id": _track_url,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "track",
|
||||
ATTR_MEDIA_CONTENT_ID: _track_url,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.ADD,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -335,9 +342,9 @@ async def test_play_media_share_link_add(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "playlist",
|
||||
"media_content_id": _share_link,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "playlist",
|
||||
ATTR_MEDIA_CONTENT_ID: _share_link,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.ADD,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -363,9 +370,9 @@ async def test_play_media_share_link_next(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "playlist",
|
||||
"media_content_id": _share_link,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "playlist",
|
||||
ATTR_MEDIA_CONTENT_ID: _share_link,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.NEXT,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -395,9 +402,9 @@ async def test_play_media_share_link_play(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "playlist",
|
||||
"media_content_id": _share_link,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "playlist",
|
||||
ATTR_MEDIA_CONTENT_ID: _share_link,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.PLAY,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -429,9 +436,9 @@ async def test_play_media_share_link_replace(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "playlist",
|
||||
"media_content_id": _share_link,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "playlist",
|
||||
ATTR_MEDIA_CONTENT_ID: _share_link,
|
||||
ATTR_MEDIA_ENQUEUE: MediaPlayerEnqueue.REPLACE,
|
||||
},
|
||||
blocking=True,
|
||||
|
@ -494,9 +501,9 @@ async def test_play_media_music_library_playlist(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "playlist",
|
||||
"media_content_id": media_content_id,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "playlist",
|
||||
ATTR_MEDIA_CONTENT_ID: media_content_id,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -524,9 +531,9 @@ async def test_play_media_music_library_playlist_dne(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "playlist",
|
||||
"media_content_id": media_content_id,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "playlist",
|
||||
ATTR_MEDIA_CONTENT_ID: media_content_id,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -565,8 +572,8 @@ async def test_select_source_line_in_tv(
|
|||
MP_DOMAIN,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"source": source,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_INPUT_SOURCE: source,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -608,8 +615,8 @@ async def test_select_source_play_uri(
|
|||
MP_DOMAIN,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"source": source,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_INPUT_SOURCE: source,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -648,8 +655,8 @@ async def test_select_source_play_queue(
|
|||
MP_DOMAIN,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"source": source,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_INPUT_SOURCE: source,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -677,8 +684,8 @@ async def test_select_source_error(
|
|||
MP_DOMAIN,
|
||||
SERVICE_SELECT_SOURCE,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"source": "invalid_source",
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_INPUT_SOURCE: "invalid_source",
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -698,8 +705,8 @@ async def test_shuffle_set(
|
|||
MP_DOMAIN,
|
||||
SERVICE_SHUFFLE_SET,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"shuffle": True,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_SHUFFLE: True,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -709,8 +716,8 @@ async def test_shuffle_set(
|
|||
MP_DOMAIN,
|
||||
SERVICE_SHUFFLE_SET,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"shuffle": False,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_SHUFFLE: False,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -728,13 +735,13 @@ async def test_shuffle_get(
|
|||
sub_callback = subscription.callback
|
||||
|
||||
state = hass.states.get("media_player.zone_a")
|
||||
assert state.attributes["shuffle"] is False
|
||||
assert state.attributes[ATTR_MEDIA_SHUFFLE] is False
|
||||
|
||||
no_media_event.variables["current_play_mode"] = "SHUFFLE_NOREPEAT"
|
||||
sub_callback(no_media_event)
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
state = hass.states.get("media_player.zone_a")
|
||||
assert state.attributes["shuffle"] is True
|
||||
assert state.attributes[ATTR_MEDIA_SHUFFLE] is True
|
||||
|
||||
# The integration keeps a copy of the last event to check for
|
||||
# changes, so we create a new event.
|
||||
|
@ -745,7 +752,7 @@ async def test_shuffle_get(
|
|||
sub_callback(no_media_event)
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
state = hass.states.get("media_player.zone_a")
|
||||
assert state.attributes["shuffle"] is False
|
||||
assert state.attributes[ATTR_MEDIA_SHUFFLE] is False
|
||||
|
||||
|
||||
async def test_repeat_set(
|
||||
|
@ -759,8 +766,8 @@ async def test_repeat_set(
|
|||
MP_DOMAIN,
|
||||
SERVICE_REPEAT_SET,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"repeat": RepeatMode.ALL,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_REPEAT: RepeatMode.ALL,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -770,8 +777,8 @@ async def test_repeat_set(
|
|||
MP_DOMAIN,
|
||||
SERVICE_REPEAT_SET,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"repeat": RepeatMode.ONE,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_REPEAT: RepeatMode.ONE,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -781,8 +788,8 @@ async def test_repeat_set(
|
|||
MP_DOMAIN,
|
||||
SERVICE_REPEAT_SET,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"repeat": RepeatMode.OFF,
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_REPEAT: RepeatMode.OFF,
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -800,13 +807,13 @@ async def test_repeat_get(
|
|||
sub_callback = subscription.callback
|
||||
|
||||
state = hass.states.get("media_player.zone_a")
|
||||
assert state.attributes["repeat"] == RepeatMode.OFF
|
||||
assert state.attributes[ATTR_MEDIA_REPEAT] == RepeatMode.OFF
|
||||
|
||||
no_media_event.variables["current_play_mode"] = "REPEAT_ALL"
|
||||
sub_callback(no_media_event)
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
state = hass.states.get("media_player.zone_a")
|
||||
assert state.attributes["repeat"] == RepeatMode.ALL
|
||||
assert state.attributes[ATTR_MEDIA_REPEAT] == RepeatMode.ALL
|
||||
|
||||
no_media_event = SonosMockEvent(
|
||||
soco, soco.avTransport, no_media_event.variables.copy()
|
||||
|
@ -815,7 +822,7 @@ async def test_repeat_get(
|
|||
sub_callback(no_media_event)
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
state = hass.states.get("media_player.zone_a")
|
||||
assert state.attributes["repeat"] == RepeatMode.ONE
|
||||
assert state.attributes[ATTR_MEDIA_REPEAT] == RepeatMode.ONE
|
||||
|
||||
no_media_event = SonosMockEvent(
|
||||
soco, soco.avTransport, no_media_event.variables.copy()
|
||||
|
@ -824,7 +831,7 @@ async def test_repeat_get(
|
|||
sub_callback(no_media_event)
|
||||
await hass.async_block_till_done(wait_background_tasks=True)
|
||||
state = hass.states.get("media_player.zone_a")
|
||||
assert state.attributes["repeat"] == RepeatMode.OFF
|
||||
assert state.attributes[ATTR_MEDIA_REPEAT] == RepeatMode.OFF
|
||||
|
||||
|
||||
async def test_play_media_favorite_item_id(
|
||||
|
@ -838,9 +845,9 @@ async def test_play_media_favorite_item_id(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "favorite_item_id",
|
||||
"media_content_id": "FV:2/4",
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "favorite_item_id",
|
||||
ATTR_MEDIA_CONTENT_ID: "FV:2/4",
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -860,9 +867,9 @@ async def test_play_media_favorite_item_id(
|
|||
MP_DOMAIN,
|
||||
SERVICE_PLAY_MEDIA,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
"media_content_type": "favorite_item_id",
|
||||
"media_content_id": "UNKNOWN_ID",
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
ATTR_MEDIA_CONTENT_TYPE: "favorite_item_id",
|
||||
ATTR_MEDIA_CONTENT_ID: "UNKNOWN_ID",
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -900,7 +907,7 @@ async def test_service_snapshot_restore(
|
|||
SONOS_DOMAIN,
|
||||
SERVICE_SNAPSHOT,
|
||||
{
|
||||
"entity_id": ["media_player.living_room", "media_player.bedroom"],
|
||||
ATTR_ENTITY_ID: ["media_player.living_room", "media_player.bedroom"],
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -913,7 +920,7 @@ async def test_service_snapshot_restore(
|
|||
SONOS_DOMAIN,
|
||||
SERVICE_RESTORE,
|
||||
{
|
||||
"entity_id": ["media_player.living_room", "media_player.bedroom"],
|
||||
ATTR_ENTITY_ID: ["media_player.living_room", "media_player.bedroom"],
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -932,7 +939,7 @@ async def test_volume(
|
|||
MP_DOMAIN,
|
||||
SERVICE_VOLUME_UP,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -942,7 +949,7 @@ async def test_volume(
|
|||
MP_DOMAIN,
|
||||
SERVICE_VOLUME_DOWN,
|
||||
{
|
||||
"entity_id": "media_player.zone_a",
|
||||
ATTR_ENTITY_ID: "media_player.zone_a",
|
||||
},
|
||||
blocking=True,
|
||||
)
|
||||
|
@ -951,7 +958,7 @@ async def test_volume(
|
|||
await hass.services.async_call(
|
||||
MP_DOMAIN,
|
||||
SERVICE_VOLUME_SET,
|
||||
{"entity_id": "media_player.zone_a", "volume_level": 0.30},
|
||||
{ATTR_ENTITY_ID: "media_player.zone_a", ATTR_MEDIA_VOLUME_LEVEL: 0.30},
|
||||
blocking=True,
|
||||
)
|
||||
# SoCo uses 0..100 for its range.
|
||||
|
|
Loading…
Add table
Reference in a new issue