From 1614e2c825f796c2e195ac384dcf3ca3ed1acb68 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Fri, 16 Aug 2024 23:58:42 +0200 Subject: [PATCH] Use constants in Sonos media player tests (#124037) --- tests/components/sonos/test_media_player.py | 145 ++++++++++---------- 1 file changed, 76 insertions(+), 69 deletions(-) diff --git a/tests/components/sonos/test_media_player.py b/tests/components/sonos/test_media_player.py index 599a04b806a..ddf84efd7da 100644 --- a/tests/components/sonos/test_media_player.py +++ b/tests/components/sonos/test_media_player.py @@ -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.