Use constants in Sonos media player tests (#124037)

This commit is contained in:
Joost Lekkerkerker 2024-08-16 23:58:42 +02:00 committed by GitHub
parent 69700f068f
commit 1614e2c825
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

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