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