Cleanup MediaClass and MediaType in tests (#78817)

Cleanup MediaClass/MediaType in tests
This commit is contained in:
epenet 2022-09-20 17:55:13 +02:00 committed by GitHub
parent 2a2cc79fc3
commit 41d2ac3943
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 224 additions and 258 deletions

View file

@ -5,12 +5,12 @@ from unittest.mock import ANY, PropertyMock, patch
from arcam.fmj import DecodeMode2CH, DecodeModeMCH, SourceCodes
import pytest
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_INPUT_SOURCE,
ATTR_SOUND_MODE,
ATTR_SOUND_MODE_LIST,
MEDIA_TYPE_MUSIC,
SERVICE_SELECT_SOURCE,
MediaType,
)
from homeassistant.const import (
ATTR_ENTITY_ID,
@ -226,8 +226,8 @@ async def test_set_volume_level(player, state, volume, call):
@pytest.mark.parametrize(
"source, media_content_type",
[
(SourceCodes.DAB, MEDIA_TYPE_MUSIC),
(SourceCodes.FM, MEDIA_TYPE_MUSIC),
(SourceCodes.DAB, MediaType.MUSIC),
(SourceCodes.FM, MediaType.MUSIC),
(SourceCodes.PVR, None),
(None, None),
],

View file

@ -16,10 +16,7 @@ import yarl
from homeassistant.components import media_player, tts
from homeassistant.components.cast import media_player as cast
from homeassistant.components.cast.media_player import ChromecastInfo
from homeassistant.components.media_player import BrowseMedia
from homeassistant.components.media_player.const import (
MEDIA_CLASS_APP,
MEDIA_CLASS_PLAYLIST,
from homeassistant.components.media_player import (
SUPPORT_NEXT_TRACK,
SUPPORT_PAUSE,
SUPPORT_PLAY,
@ -31,6 +28,8 @@ from homeassistant.components.media_player.const import (
SUPPORT_TURN_ON,
SUPPORT_VOLUME_MUTE,
SUPPORT_VOLUME_SET,
BrowseMedia,
MediaClass,
)
from homeassistant.config import async_process_ha_core_config
from homeassistant.const import (
@ -2110,7 +2109,7 @@ async def test_cast_platform_browse_media(hass: HomeAssistant, hass_ws_client):
return_value=[
BrowseMedia(
title="Spotify",
media_class=MEDIA_CLASS_APP,
media_class=MediaClass.APP,
media_content_id="",
media_content_type="spotify",
thumbnail="https://brands.home-assistant.io/_/spotify/logo.png",
@ -2122,7 +2121,7 @@ async def test_cast_platform_browse_media(hass: HomeAssistant, hass_ws_client):
async_browse_media=AsyncMock(
return_value=BrowseMedia(
title="Spotify Favourites",
media_class=MEDIA_CLASS_PLAYLIST,
media_class=MediaClass.PLAYLIST,
media_content_id="",
media_content_type="spotify",
can_play=True,

View file

@ -12,8 +12,7 @@ from homeassistant.components.directv.media_player import (
ATTR_MEDIA_RECORDED,
ATTR_MEDIA_START_TIME,
)
from homeassistant.components.media_player import MediaPlayerDeviceClass
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_INPUT_SOURCE,
ATTR_MEDIA_ALBUM_NAME,
ATTR_MEDIA_ARTIST,
@ -27,9 +26,6 @@ from homeassistant.components.media_player.const import (
ATTR_MEDIA_SERIES_TITLE,
ATTR_MEDIA_TITLE,
DOMAIN as MP_DOMAIN,
MEDIA_TYPE_MOVIE,
MEDIA_TYPE_MUSIC,
MEDIA_TYPE_TVSHOW,
SERVICE_PLAY_MEDIA,
SUPPORT_NEXT_TRACK,
SUPPORT_PAUSE,
@ -39,6 +35,8 @@ from homeassistant.components.media_player.const import (
SUPPORT_STOP,
SUPPORT_TURN_OFF,
SUPPORT_TURN_ON,
MediaPlayerDeviceClass,
MediaType,
)
from homeassistant.const import (
ATTR_ENTITY_ID,
@ -218,7 +216,7 @@ async def test_check_attributes(
assert state.state == STATE_PLAYING
assert state.attributes.get(ATTR_MEDIA_CONTENT_ID) == "17016356"
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_MOVIE
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.MOVIE
assert state.attributes.get(ATTR_MEDIA_DURATION) == 7200
assert state.attributes.get(ATTR_MEDIA_POSITION) == 4437
assert state.attributes.get(ATTR_MEDIA_POSITION_UPDATED_AT)
@ -237,7 +235,7 @@ async def test_check_attributes(
assert state.state == STATE_PLAYING
assert state.attributes.get(ATTR_MEDIA_CONTENT_ID) == "4405732"
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_TVSHOW
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.TVSHOW
assert state.attributes.get(ATTR_MEDIA_DURATION) == 1791
assert state.attributes.get(ATTR_MEDIA_POSITION) == 263
assert state.attributes.get(ATTR_MEDIA_POSITION_UPDATED_AT)
@ -256,7 +254,7 @@ async def test_check_attributes(
assert state.state == STATE_PLAYING
assert state.attributes.get(ATTR_MEDIA_CONTENT_ID) == "76917562"
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_MUSIC
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.MUSIC
assert state.attributes.get(ATTR_MEDIA_DURATION) == 86400
assert state.attributes.get(ATTR_MEDIA_POSITION) == 15050
assert state.attributes.get(ATTR_MEDIA_POSITION_UPDATED_AT)

View file

@ -19,23 +19,6 @@ from homeassistant.components.forked_daapd.const import (
SUPPORTED_FEATURES_ZONE,
)
from homeassistant.components.media_player import (
SERVICE_CLEAR_PLAYLIST,
SERVICE_MEDIA_NEXT_TRACK,
SERVICE_MEDIA_PAUSE,
SERVICE_MEDIA_PLAY,
SERVICE_MEDIA_PREVIOUS_TRACK,
SERVICE_MEDIA_SEEK,
SERVICE_MEDIA_STOP,
SERVICE_PLAY_MEDIA,
SERVICE_SELECT_SOURCE,
SERVICE_SHUFFLE_SET,
SERVICE_TOGGLE,
SERVICE_TURN_OFF,
SERVICE_TURN_ON,
SERVICE_VOLUME_MUTE,
SERVICE_VOLUME_SET,
)
from homeassistant.components.media_player.const import (
ATTR_INPUT_SOURCE,
ATTR_MEDIA_ALBUM_ARTIST,
ATTR_MEDIA_ALBUM_NAME,
@ -51,8 +34,22 @@ from homeassistant.components.media_player.const import (
ATTR_MEDIA_VOLUME_LEVEL,
ATTR_MEDIA_VOLUME_MUTED,
DOMAIN as MP_DOMAIN,
MEDIA_TYPE_MUSIC,
MEDIA_TYPE_TVSHOW,
SERVICE_CLEAR_PLAYLIST,
SERVICE_MEDIA_NEXT_TRACK,
SERVICE_MEDIA_PAUSE,
SERVICE_MEDIA_PLAY,
SERVICE_MEDIA_PREVIOUS_TRACK,
SERVICE_MEDIA_SEEK,
SERVICE_MEDIA_STOP,
SERVICE_PLAY_MEDIA,
SERVICE_SELECT_SOURCE,
SERVICE_SHUFFLE_SET,
SERVICE_TOGGLE,
SERVICE_TURN_OFF,
SERVICE_TURN_ON,
SERVICE_VOLUME_MUTE,
SERVICE_VOLUME_SET,
MediaType,
)
from homeassistant.config_entries import SOURCE_USER
from homeassistant.const import (
@ -360,7 +357,7 @@ def test_master_state(hass, mock_api_object):
assert not state.attributes[ATTR_MEDIA_VOLUME_MUTED]
assert state.attributes[ATTR_MEDIA_VOLUME_LEVEL] == 0.2
assert state.attributes[ATTR_MEDIA_CONTENT_ID] == 12322
assert state.attributes[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert state.attributes[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert state.attributes[ATTR_MEDIA_DURATION] == 0.05
assert state.attributes[ATTR_MEDIA_POSITION] == 0.005
assert state.attributes[ATTR_MEDIA_TITLE] == "No album" # reversed for url
@ -556,7 +553,7 @@ async def test_async_play_media_from_paused(hass, mock_api_object):
TEST_MASTER_ENTITY_NAME,
SERVICE_PLAY_MEDIA,
{
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: "http://example.com/somefile.mp3",
},
)
@ -580,7 +577,7 @@ async def test_async_play_media_from_stopped(
TEST_MASTER_ENTITY_NAME,
SERVICE_PLAY_MEDIA,
{
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: "http://example.com/somefile.mp3",
},
)
@ -597,7 +594,7 @@ async def test_async_play_media_unsupported(hass, mock_api_object):
TEST_MASTER_ENTITY_NAME,
SERVICE_PLAY_MEDIA,
{
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_TVSHOW,
ATTR_MEDIA_CONTENT_TYPE: MediaType.TVSHOW,
ATTR_MEDIA_CONTENT_ID: "wontwork.mp4",
},
)
@ -615,7 +612,7 @@ async def test_async_play_media_tts_timeout(hass, mock_api_object):
TEST_MASTER_ENTITY_NAME,
SERVICE_PLAY_MEDIA,
{
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: "http://example.com/somefile.mp3",
},
)
@ -724,7 +721,7 @@ async def test_librespot_java_play_media(hass, pipe_control_api_object):
TEST_MASTER_ENTITY_NAME,
SERVICE_PLAY_MEDIA,
{
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: "http://example.com/somefile.mp3",
},
)
@ -746,7 +743,7 @@ async def test_librespot_java_play_media_pause_timeout(hass, pipe_control_api_ob
TEST_MASTER_ENTITY_NAME,
SERVICE_PLAY_MEDIA,
{
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: "http://example.com/somefile.mp3",
},
)

View file

@ -29,10 +29,7 @@ from homeassistant.components import (
)
from homeassistant.components.google_assistant import const, error, helpers, trait
from homeassistant.components.google_assistant.error import SmartHomeError
from homeassistant.components.media_player.const import (
MEDIA_TYPE_CHANNEL,
SERVICE_PLAY_MEDIA,
)
from homeassistant.components.media_player import SERVICE_PLAY_MEDIA, MediaType
from homeassistant.config import async_process_ha_core_config
from homeassistant.const import (
ATTR_ASSUMED_STATE,
@ -3169,7 +3166,7 @@ async def test_channel(hass):
assert media_player_calls[0].data == {
ATTR_ENTITY_ID: "media_player.demo",
media_player.ATTR_MEDIA_CONTENT_ID: "1",
media_player.ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_CHANNEL,
media_player.ATTR_MEDIA_CONTENT_TYPE: MediaType.CHANNEL,
}
with pytest.raises(SmartHomeError, match="Channel is not available"):

View file

@ -10,7 +10,7 @@ from homeassistant.components.heos.const import (
DOMAIN,
SIGNAL_HEOS_UPDATED,
)
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_GROUP_MEMBERS,
ATTR_INPUT_SOURCE,
ATTR_INPUT_SOURCE_LIST,
@ -27,9 +27,6 @@ from homeassistant.components.media_player.const import (
ATTR_MEDIA_VOLUME_LEVEL,
ATTR_MEDIA_VOLUME_MUTED,
DOMAIN as MEDIA_PLAYER_DOMAIN,
MEDIA_TYPE_MUSIC,
MEDIA_TYPE_PLAYLIST,
MEDIA_TYPE_URL,
SERVICE_CLEAR_PLAYLIST,
SERVICE_JOIN,
SERVICE_PLAY_MEDIA,
@ -40,6 +37,7 @@ from homeassistant.components.media_player.const import (
SUPPORT_PLAY,
SUPPORT_PREVIOUS_TRACK,
SUPPORT_STOP,
MediaType,
)
from homeassistant.const import (
ATTR_ENTITY_ID,
@ -77,7 +75,7 @@ async def test_state_attributes(hass, config_entry, config, controller):
assert state.attributes[ATTR_MEDIA_VOLUME_LEVEL] == 0.25
assert not state.attributes[ATTR_MEDIA_VOLUME_MUTED]
assert state.attributes[ATTR_MEDIA_CONTENT_ID] == "1"
assert state.attributes[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert state.attributes[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert ATTR_MEDIA_DURATION not in state.attributes
assert ATTR_MEDIA_POSITION not in state.attributes
assert state.attributes[ATTR_MEDIA_TITLE] == "Song"
@ -611,7 +609,7 @@ async def test_play_media_url(hass, config_entry, config, controller, caplog):
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_URL,
ATTR_MEDIA_CONTENT_TYPE: MediaType.URL,
ATTR_MEDIA_CONTENT_ID: url,
},
blocking=True,
@ -634,7 +632,7 @@ async def test_play_media_music(hass, config_entry, config, controller, caplog):
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: url,
},
blocking=True,
@ -708,7 +706,7 @@ async def test_play_media_playlist(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_PLAYLIST,
ATTR_MEDIA_CONTENT_TYPE: MediaType.PLAYLIST,
ATTR_MEDIA_CONTENT_ID: playlist.name,
},
blocking=True,
@ -723,7 +721,7 @@ async def test_play_media_playlist(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_PLAYLIST,
ATTR_MEDIA_CONTENT_TYPE: MediaType.PLAYLIST,
ATTR_MEDIA_CONTENT_ID: playlist.name,
ATTR_MEDIA_ENQUEUE: True,
},
@ -737,7 +735,7 @@ async def test_play_media_playlist(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: "media_player.test_player",
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_PLAYLIST,
ATTR_MEDIA_CONTENT_TYPE: MediaType.PLAYLIST,
ATTR_MEDIA_CONTENT_ID: "Invalid",
},
blocking=True,

View file

@ -6,8 +6,12 @@ from unittest.mock import patch
import pytest
import voluptuous as vol
from homeassistant.components import media_player
from homeassistant.components.media_player.browse_media import BrowseMedia
from homeassistant.components.media_player import (
BrowseMedia,
MediaClass,
MediaPlayerEnqueue,
MediaPlayerEntityFeature,
)
from homeassistant.components.websocket_api.const import TYPE_RESULT
from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF
from homeassistant.setup import async_setup_component
@ -133,11 +137,11 @@ async def test_media_browse(hass, hass_ws_client):
with patch(
"homeassistant.components.demo.media_player.YOUTUBE_PLAYER_SUPPORT",
media_player.MediaPlayerEntityFeature.BROWSE_MEDIA,
MediaPlayerEntityFeature.BROWSE_MEDIA,
), patch(
"homeassistant.components.media_player.MediaPlayerEntity.async_browse_media",
return_value=BrowseMedia(
media_class=media_player.MEDIA_CLASS_DIRECTORY,
media_class=MediaClass.DIRECTORY,
media_content_id="mock-id",
media_content_type="mock-type",
title="Mock Title",
@ -176,7 +180,7 @@ async def test_media_browse(hass, hass_ws_client):
with patch(
"homeassistant.components.demo.media_player.YOUTUBE_PLAYER_SUPPORT",
media_player.MediaPlayerEntityFeature.BROWSE_MEDIA,
MediaPlayerEntityFeature.BROWSE_MEDIA,
), patch(
"homeassistant.components.media_player.MediaPlayerEntity.async_browse_media",
return_value={"bla": "yo"},
@ -207,8 +211,7 @@ async def test_group_members_available_when_off(hass):
# Fake group support for DemoYoutubePlayer
with patch(
"homeassistant.components.demo.media_player.YOUTUBE_PLAYER_SUPPORT",
media_player.MediaPlayerEntityFeature.GROUPING
| media_player.MediaPlayerEntityFeature.TURN_OFF,
MediaPlayerEntityFeature.GROUPING | MediaPlayerEntityFeature.TURN_OFF,
):
await hass.services.async_call(
"media_player",
@ -225,12 +228,12 @@ async def test_group_members_available_when_off(hass):
@pytest.mark.parametrize(
"input,expected",
(
(True, media_player.MediaPlayerEnqueue.ADD),
(False, media_player.MediaPlayerEnqueue.PLAY),
("play", media_player.MediaPlayerEnqueue.PLAY),
("next", media_player.MediaPlayerEnqueue.NEXT),
("add", media_player.MediaPlayerEnqueue.ADD),
("replace", media_player.MediaPlayerEnqueue.REPLACE),
(True, MediaPlayerEnqueue.ADD),
(False, MediaPlayerEnqueue.PLAY),
("play", MediaPlayerEnqueue.PLAY),
("next", MediaPlayerEnqueue.NEXT),
("add", MediaPlayerEnqueue.ADD),
("replace", MediaPlayerEnqueue.REPLACE),
),
)
async def test_enqueue_rewrite(hass, input, expected):

View file

@ -5,7 +5,7 @@ import pytest
import yarl
from homeassistant.components import media_source
from homeassistant.components.media_player import MEDIA_CLASS_DIRECTORY, BrowseError
from homeassistant.components.media_player import BrowseError, MediaClass
from homeassistant.components.media_source import const, models
from homeassistant.setup import async_setup_component
@ -160,7 +160,7 @@ async def test_websocket_browse_media(hass, hass_ws_client):
domain=media_source.DOMAIN,
identifier="/media",
title="Local Media",
media_class=MEDIA_CLASS_DIRECTORY,
media_class=MediaClass.DIRECTORY,
media_content_type="listing",
can_play=False,
can_expand=True,

View file

@ -1,9 +1,5 @@
"""Test Media Source model methods."""
from homeassistant.components.media_player.const import (
MEDIA_CLASS_DIRECTORY,
MEDIA_CLASS_MUSIC,
MEDIA_TYPE_MUSIC,
)
from homeassistant.components.media_player import MediaClass, MediaType
from homeassistant.components.media_source import const, models
@ -12,19 +8,19 @@ async def test_browse_media_as_dict():
base = models.BrowseMediaSource(
domain=const.DOMAIN,
identifier="media",
media_class=MEDIA_CLASS_DIRECTORY,
media_class=MediaClass.DIRECTORY,
media_content_type="folder",
title="media/",
can_play=False,
can_expand=True,
children_media_class=MEDIA_CLASS_MUSIC,
children_media_class=MediaClass.MUSIC,
)
base.children = [
models.BrowseMediaSource(
domain=const.DOMAIN,
identifier="media/test.mp3",
media_class=MEDIA_CLASS_MUSIC,
media_content_type=MEDIA_TYPE_MUSIC,
media_class=MediaClass.MUSIC,
media_content_type=MediaType.MUSIC,
title="test.mp3",
can_play=True,
can_expand=False,
@ -33,15 +29,15 @@ async def test_browse_media_as_dict():
item = base.as_dict()
assert item["title"] == "media/"
assert item["media_class"] == MEDIA_CLASS_DIRECTORY
assert item["media_class"] == MediaClass.DIRECTORY
assert item["media_content_type"] == "folder"
assert item["media_content_id"] == f"{const.URI_SCHEME}{const.DOMAIN}/media"
assert not item["can_play"]
assert item["can_expand"]
assert item["children_media_class"] == MEDIA_CLASS_MUSIC
assert item["children_media_class"] == MediaClass.MUSIC
assert len(item["children"]) == 1
assert item["children"][0]["title"] == "test.mp3"
assert item["children"][0]["media_class"] == MEDIA_CLASS_MUSIC
assert item["children"][0]["media_class"] == MediaClass.MUSIC
async def test_browse_media_parent_no_children():
@ -49,7 +45,7 @@ async def test_browse_media_parent_no_children():
base = models.BrowseMediaSource(
domain=const.DOMAIN,
identifier="media",
media_class=MEDIA_CLASS_DIRECTORY,
media_class=MediaClass.DIRECTORY,
media_content_type="folder",
title="media/",
can_play=False,
@ -58,7 +54,7 @@ async def test_browse_media_parent_no_children():
item = base.as_dict()
assert item["title"] == "media/"
assert item["media_class"] == MEDIA_CLASS_DIRECTORY
assert item["media_class"] == MediaClass.DIRECTORY
assert item["media_content_type"] == "folder"
assert item["media_content_id"] == f"{const.URI_SCHEME}{const.DOMAIN}/media"
assert not item["can_play"]

View file

@ -4,16 +4,12 @@ from unittest.mock import patch
from plexapi.exceptions import BadRequest, NotFound
import pytest
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_MEDIA_CONTENT_ID,
ATTR_MEDIA_CONTENT_TYPE,
DOMAIN as MEDIA_PLAYER_DOMAIN,
MEDIA_TYPE_EPISODE,
MEDIA_TYPE_MOVIE,
MEDIA_TYPE_MUSIC,
MEDIA_TYPE_PLAYLIST,
MEDIA_TYPE_VIDEO,
SERVICE_PLAY_MEDIA,
MediaType,
)
from homeassistant.components.plex.const import DOMAIN
from homeassistant.components.plex.errors import MediaNotFound
@ -59,7 +55,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_EPISODE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.EPISODE,
ATTR_MEDIA_CONTENT_ID: payload,
},
True,
@ -72,7 +68,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_EPISODE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.EPISODE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "TV Shows", "show_name": "TV Show"}',
},
True,
@ -84,7 +80,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_EPISODE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.EPISODE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "TV Shows", "episode_name": "An Episode"}',
},
True,
@ -98,7 +94,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_EPISODE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.EPISODE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "TV Shows", "show_name": "TV Show", "season_number": 1}',
},
True,
@ -112,7 +108,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_EPISODE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.EPISODE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "TV Shows", "show_name": "TV Show", "season_number": 1, "episode_number": 3}',
},
True,
@ -131,7 +127,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Music", "artist_name": "Artist"}',
},
True,
@ -143,7 +139,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Music", "album_name": "Album"}',
},
True,
@ -155,7 +151,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Music", "artist_name": "Artist", "track_name": "Track 3"}',
},
True,
@ -169,7 +165,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Music", "artist_name": "Artist", "album_name": "Album"}',
},
True,
@ -183,7 +179,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Music", "artist_name": "Artist", "album_name": "Album", "track_number": 3}',
},
True,
@ -202,7 +198,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Music", "artist_name": "Artist", "album_name": "Album", "track_name": "Track 3"}',
},
True,
@ -222,7 +218,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_VIDEO,
ATTR_MEDIA_CONTENT_TYPE: MediaType.VIDEO,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Movies", "video_name": "Movie 1"}',
},
True,
@ -234,7 +230,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Movies", "title": "Movie 1"}',
},
True,
@ -248,7 +244,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_VIDEO,
ATTR_MEDIA_CONTENT_TYPE: MediaType.VIDEO,
ATTR_MEDIA_CONTENT_ID: payload,
},
True,
@ -263,7 +259,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_VIDEO,
ATTR_MEDIA_CONTENT_TYPE: MediaType.VIDEO,
ATTR_MEDIA_CONTENT_ID: payload,
},
True,
@ -276,7 +272,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_PLAYLIST,
ATTR_MEDIA_CONTENT_TYPE: MediaType.PLAYLIST,
ATTR_MEDIA_CONTENT_ID: '{"playlist_name": "Playlist 1"}',
},
True,
@ -289,7 +285,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_PLAYLIST,
ATTR_MEDIA_CONTENT_TYPE: MediaType.PLAYLIST,
ATTR_MEDIA_CONTENT_ID: payload,
},
True,
@ -303,7 +299,7 @@ async def test_media_lookups(hass, mock_plex_server, requests_mock, playqueue_cr
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player_id,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_PLAYLIST,
ATTR_MEDIA_CONTENT_TYPE: MediaType.PLAYLIST,
ATTR_MEDIA_CONTENT_ID: payload,
},
True,

View file

@ -4,12 +4,12 @@ from unittest.mock import Mock, patch
import pytest
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_MEDIA_CONTENT_ID,
ATTR_MEDIA_CONTENT_TYPE,
DOMAIN as MP_DOMAIN,
MEDIA_TYPE_MOVIE,
SERVICE_PLAY_MEDIA,
MediaType,
)
from homeassistant.components.plex.const import CONF_SERVER_IDENTIFIER, PLEX_URI_SCHEME
from homeassistant.const import ATTR_ENTITY_ID
@ -69,13 +69,13 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: payload,
},
True,
)
assert not playmedia_mock.called
assert f"No {MEDIA_TYPE_MOVIE} results in 'Movies' for" in str(excinfo.value)
assert f"No {MediaType.MOVIE} results in 'Movies' for" in str(excinfo.value)
movie1 = MockPlexMedia("Movie", "movie")
movie2 = MockPlexMedia("Movie II", "movie")
@ -89,7 +89,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Movies", "title": "Movie 1" }',
},
True,
@ -104,7 +104,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Movies", "title": "Movie 1", "resume": true}',
},
True,
@ -119,7 +119,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: PLEX_URI_SCHEME
+ f"{DEFAULT_DATA[CONF_SERVER_IDENTIFIER]}/1",
},
@ -134,7 +134,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: PLEX_URI_SCHEME
+ f"{DEFAULT_DATA[CONF_SERVER_IDENTIFIER]}/1?resume=1",
},
@ -150,7 +150,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: PLEX_URI_SCHEME + "1",
},
True,
@ -166,7 +166,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Movies", "title": "Movie" }',
},
True,
@ -184,7 +184,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: payload,
},
True,
@ -202,7 +202,7 @@ async def test_media_player_playback(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MOVIE,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MOVIE,
ATTR_MEDIA_CONTENT_ID: '{"library_name": "Movies", "title": "Movie", "allow_multiple": true }',
},
True,

View file

@ -7,7 +7,7 @@ from plexapi.exceptions import NotFound
import plexapi.playqueue
import pytest
from homeassistant.components.media_player.const import MEDIA_TYPE_MUSIC
from homeassistant.components.media_player import MediaType
from homeassistant.components.plex.const import (
CONF_SERVER,
CONF_SERVER_IDENTIFIER,
@ -140,7 +140,7 @@ async def test_lookup_media_for_other_integrations(
# Test with no Plex integration available
with pytest.raises(HomeAssistantError) as excinfo:
process_plex_payload(hass, MEDIA_TYPE_MUSIC, CONTENT_ID)
process_plex_payload(hass, MediaType.MUSIC, CONTENT_ID)
assert "Plex integration not configured" in str(excinfo.value)
with patch(
@ -152,7 +152,7 @@ async def test_lookup_media_for_other_integrations(
# Test with no Plex servers available
with pytest.raises(HomeAssistantError) as excinfo:
process_plex_payload(hass, MEDIA_TYPE_MUSIC, CONTENT_ID)
process_plex_payload(hass, MediaType.MUSIC, CONTENT_ID)
assert "No Plex servers available" in str(excinfo.value)
# Complete setup of a Plex server
@ -161,28 +161,28 @@ async def test_lookup_media_for_other_integrations(
# Test lookup success without playqueue
result = process_plex_payload(
hass, MEDIA_TYPE_MUSIC, CONTENT_ID, supports_playqueues=False
hass, MediaType.MUSIC, CONTENT_ID, supports_playqueues=False
)
assert isinstance(result.media, plexapi.audio.Artist)
assert not result.shuffle
# Test media key payload without playqueue
result = process_plex_payload(
hass, MEDIA_TYPE_MUSIC, CONTENT_ID_KEY, supports_playqueues=False
hass, MediaType.MUSIC, CONTENT_ID_KEY, supports_playqueues=False
)
assert isinstance(result.media, plexapi.audio.Track)
assert not result.shuffle
# Test with specified server without playqueue
result = process_plex_payload(
hass, MEDIA_TYPE_MUSIC, CONTENT_ID_SERVER, supports_playqueues=False
hass, MediaType.MUSIC, CONTENT_ID_SERVER, supports_playqueues=False
)
assert isinstance(result.media, plexapi.audio.Artist)
assert not result.shuffle
# Test shuffle without playqueue
result = process_plex_payload(
hass, MEDIA_TYPE_MUSIC, CONTENT_ID_SHUFFLE, supports_playqueues=False
hass, MediaType.MUSIC, CONTENT_ID_SHUFFLE, supports_playqueues=False
)
assert isinstance(result.media, plexapi.audio.Artist)
assert result.shuffle
@ -190,12 +190,12 @@ async def test_lookup_media_for_other_integrations(
# Test with media not found
with patch("plexapi.library.LibrarySection.search", return_value=None):
with pytest.raises(HomeAssistantError) as excinfo:
process_plex_payload(hass, MEDIA_TYPE_MUSIC, CONTENT_ID_BAD_MEDIA)
assert f"No {MEDIA_TYPE_MUSIC} results in 'Music' for" in str(excinfo.value)
process_plex_payload(hass, MediaType.MUSIC, CONTENT_ID_BAD_MEDIA)
assert f"No {MediaType.MUSIC} results in 'Music' for" in str(excinfo.value)
# Test with playqueue
requests_mock.get("https://1.2.3.4:32400/playQueues/1234", text=playqueue_1234)
result = process_plex_payload(hass, MEDIA_TYPE_MUSIC, CONTENT_ID_PLAYQUEUE)
result = process_plex_payload(hass, MediaType.MUSIC, CONTENT_ID_PLAYQUEUE)
assert isinstance(result.media, plexapi.playqueue.PlayQueue)
# Test with invalid playqueue
@ -203,12 +203,12 @@ async def test_lookup_media_for_other_integrations(
"https://1.2.3.4:32400/playQueues/1235", status_code=HTTPStatus.NOT_FOUND
)
with pytest.raises(HomeAssistantError) as excinfo:
process_plex_payload(hass, MEDIA_TYPE_MUSIC, CONTENT_ID_BAD_PLAYQUEUE)
process_plex_payload(hass, MediaType.MUSIC, CONTENT_ID_BAD_PLAYQUEUE)
assert "PlayQueue '1235' could not be found" in str(excinfo.value)
# Test playqueue is created with shuffle
requests_mock.post("/playqueues", text=playqueue_created)
result = process_plex_payload(hass, MEDIA_TYPE_MUSIC, CONTENT_ID_SHUFFLE)
result = process_plex_payload(hass, MediaType.MUSIC, CONTENT_ID_SHUFFLE)
assert isinstance(result.media, plexapi.playqueue.PlayQueue)
@ -218,7 +218,7 @@ async def test_lookup_media_with_urls(hass, mock_plex_server):
# Test URL format
result = process_plex_payload(
hass, MEDIA_TYPE_MUSIC, CONTENT_ID_URL, supports_playqueues=False
hass, MediaType.MUSIC, CONTENT_ID_URL, supports_playqueues=False
)
assert isinstance(result.media, plexapi.audio.Track)
assert result.shuffle is False
@ -226,7 +226,7 @@ async def test_lookup_media_with_urls(hass, mock_plex_server):
# Test URL format with shuffle
CONTENT_ID_URL_WITH_SHUFFLE = CONTENT_ID_URL + "?shuffle=1"
result = process_plex_payload(
hass, MEDIA_TYPE_MUSIC, CONTENT_ID_URL_WITH_SHUFFLE, supports_playqueues=False
hass, MediaType.MUSIC, CONTENT_ID_URL_WITH_SHUFFLE, supports_playqueues=False
)
assert isinstance(result.media, plexapi.audio.Track)
assert result.shuffle is True

View file

@ -3,10 +3,10 @@ from unittest.mock import MagicMock, patch
from homeassistant import config_entries, data_entry_flow
from homeassistant.components import ps4
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_MEDIA_CONTENT_TYPE,
ATTR_MEDIA_TITLE,
MEDIA_TYPE_GAME,
MediaType,
)
from homeassistant.components.ps4.const import (
ATTR_MEDIA_IMAGE_URL,
@ -86,20 +86,20 @@ MOCK_UNIQUE_ID = "someuniqueid"
MOCK_ID = "CUSA00123"
MOCK_URL = "http://someurl.jpeg"
MOCK_TITLE = "Some Title"
MOCK_TYPE = MEDIA_TYPE_GAME
MOCK_TYPE = MediaType.GAME
MOCK_GAMES_DATA_OLD_STR_FORMAT = {"mock_id": "mock_title", "mock_id2": "mock_title2"}
MOCK_GAMES_DATA = {
ATTR_LOCKED: False,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_GAME,
ATTR_MEDIA_CONTENT_TYPE: MediaType.GAME,
ATTR_MEDIA_IMAGE_URL: MOCK_URL,
ATTR_MEDIA_TITLE: MOCK_TITLE,
}
MOCK_GAMES_DATA_LOCKED = {
ATTR_LOCKED: True,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_GAME,
ATTR_MEDIA_CONTENT_TYPE: MediaType.GAME,
ATTR_MEDIA_IMAGE_URL: MOCK_URL,
ATTR_MEDIA_TITLE: MOCK_TITLE,
}
@ -215,7 +215,7 @@ def test_games_reformat_to_dict(hass):
assert mock_data
assert mock_data[ATTR_MEDIA_IMAGE_URL] is None
assert mock_data[ATTR_LOCKED] is False
assert mock_data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_GAME
assert mock_data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.GAME
def test_load_games(hass):
@ -234,7 +234,7 @@ def test_load_games(hass):
assert mock_data[ATTR_MEDIA_TITLE] == MOCK_TITLE
assert mock_data[ATTR_MEDIA_IMAGE_URL] == MOCK_URL
assert mock_data[ATTR_LOCKED] is False
assert mock_data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_GAME
assert mock_data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.GAME
def test_loading_games_returns_dict(hass):

View file

@ -6,14 +6,13 @@ from pyps4_2ndscreen.ddp import DEFAULT_UDP_PORT
from pyps4_2ndscreen.media_art import TYPE_APP as PS_TYPE_APP
from homeassistant.components import ps4
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_INPUT_SOURCE,
ATTR_INPUT_SOURCE_LIST,
ATTR_MEDIA_CONTENT_ID,
ATTR_MEDIA_CONTENT_TYPE,
ATTR_MEDIA_TITLE,
MEDIA_TYPE_APP,
MEDIA_TYPE_GAME,
MediaType,
)
from homeassistant.components.ps4.const import (
ATTR_MEDIA_IMAGE_URL,
@ -60,19 +59,19 @@ MOCK_RANDOM_PORT = "1234"
MOCK_TITLE_ID = "CUSA00000"
MOCK_TITLE_NAME = "Random Game"
MOCK_TITLE_TYPE = MEDIA_TYPE_GAME
MOCK_TITLE_TYPE = MediaType.GAME
MOCK_TITLE_ART_URL = "https://somecoverurl"
MOCK_GAMES_DATA = {
ATTR_LOCKED: False,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_GAME,
ATTR_MEDIA_CONTENT_TYPE: MediaType.GAME,
ATTR_MEDIA_IMAGE_URL: MOCK_TITLE_ART_URL,
ATTR_MEDIA_TITLE: MOCK_TITLE_NAME,
}
MOCK_GAMES_DATA_LOCKED = {
ATTR_LOCKED: True,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_GAME,
ATTR_MEDIA_CONTENT_TYPE: MediaType.GAME,
ATTR_MEDIA_IMAGE_URL: MOCK_TITLE_ART_URL,
ATTR_MEDIA_TITLE: MOCK_TITLE_NAME,
}
@ -258,7 +257,7 @@ async def test_media_attributes_are_fetched(hass):
mock_attrs = dict(mock_state.attributes)
assert len(mock_fetch_app.mock_calls) == 1
assert mock_attrs.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_APP
assert mock_attrs.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.APP
async def test_media_attributes_are_loaded(hass, patch_load_json):

View file

@ -5,8 +5,7 @@ from unittest.mock import MagicMock, patch
import pytest
from rokuecp import RokuConnectionError, RokuConnectionTimeoutError, RokuError
from homeassistant.components.media_player import MediaPlayerDeviceClass
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_APP_ID,
ATTR_APP_NAME,
ATTR_INPUT_SOURCE,
@ -19,17 +18,6 @@ from homeassistant.components.media_player.const import (
ATTR_MEDIA_TITLE,
ATTR_MEDIA_VOLUME_MUTED,
DOMAIN as MP_DOMAIN,
MEDIA_CLASS_APP,
MEDIA_CLASS_CHANNEL,
MEDIA_CLASS_DIRECTORY,
MEDIA_CLASS_VIDEO,
MEDIA_TYPE_APP,
MEDIA_TYPE_APPS,
MEDIA_TYPE_CHANNEL,
MEDIA_TYPE_CHANNELS,
MEDIA_TYPE_MUSIC,
MEDIA_TYPE_URL,
MEDIA_TYPE_VIDEO,
SERVICE_PLAY_MEDIA,
SERVICE_SELECT_SOURCE,
SUPPORT_BROWSE_MEDIA,
@ -43,6 +31,9 @@ from homeassistant.components.media_player.const import (
SUPPORT_TURN_ON,
SUPPORT_VOLUME_MUTE,
SUPPORT_VOLUME_STEP,
MediaClass,
MediaPlayerDeviceClass,
MediaType,
)
from homeassistant.components.roku.const import (
ATTR_CONTENT_ID,
@ -271,7 +262,7 @@ async def test_attributes_app(
assert state
assert state.state == STATE_ON
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_APP
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.APP
assert state.attributes.get(ATTR_APP_ID) == "12"
assert state.attributes.get(ATTR_APP_NAME) == "Netflix"
assert state.attributes.get(ATTR_INPUT_SOURCE) == "Netflix"
@ -290,7 +281,7 @@ async def test_attributes_app_media_playing(
assert state
assert state.state == STATE_PLAYING
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_APP
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.APP
assert state.attributes.get(ATTR_MEDIA_DURATION) == 6496
assert state.attributes.get(ATTR_MEDIA_POSITION) == 38
assert state.attributes.get(ATTR_APP_ID) == "74519"
@ -309,7 +300,7 @@ async def test_attributes_app_media_paused(
assert state
assert state.state == STATE_PAUSED
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_APP
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.APP
assert state.attributes.get(ATTR_MEDIA_DURATION) == 6496
assert state.attributes.get(ATTR_MEDIA_POSITION) == 313
assert state.attributes.get(ATTR_APP_ID) == "74519"
@ -346,7 +337,7 @@ async def test_tv_attributes(
assert state.attributes.get(ATTR_APP_ID) == "tvinput.dtv"
assert state.attributes.get(ATTR_APP_NAME) == "Antenna TV"
assert state.attributes.get(ATTR_INPUT_SOURCE) == "Antenna TV"
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MEDIA_TYPE_CHANNEL
assert state.attributes.get(ATTR_MEDIA_CONTENT_TYPE) == MediaType.CHANNEL
assert state.attributes.get(ATTR_MEDIA_CHANNEL) == "getTV (14.3)"
assert state.attributes.get(ATTR_MEDIA_TITLE) == "Airwolf"
@ -436,7 +427,7 @@ async def test_services(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: MAIN_ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_APP,
ATTR_MEDIA_CONTENT_TYPE: MediaType.APP,
ATTR_MEDIA_CONTENT_ID: "11",
},
blocking=True,
@ -450,7 +441,7 @@ async def test_services(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: MAIN_ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_APP,
ATTR_MEDIA_CONTENT_TYPE: MediaType.APP,
ATTR_MEDIA_CONTENT_ID: "291097",
ATTR_MEDIA_EXTRA: {
ATTR_MEDIA_TYPE: "movie",
@ -517,7 +508,7 @@ async def test_services_play_media(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: MAIN_ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: "https://localhost/media.m4a",
ATTR_MEDIA_EXTRA: {ATTR_FORMAT: "blah"},
},
@ -530,11 +521,11 @@ async def test_services_play_media(
@pytest.mark.parametrize(
"content_type, content_id, resolved_name, resolved_format",
[
(MEDIA_TYPE_URL, "http://localhost/media.m4a", "media.m4a", "m4a"),
(MEDIA_TYPE_MUSIC, "http://localhost/media.m4a", "media.m4a", "m4a"),
(MEDIA_TYPE_MUSIC, "http://localhost/media.mka", "media.mka", "mka"),
(MediaType.URL, "http://localhost/media.m4a", "media.m4a", "m4a"),
(MediaType.MUSIC, "http://localhost/media.m4a", "media.m4a", "m4a"),
(MediaType.MUSIC, "http://localhost/media.mka", "media.mka", "mka"),
(
MEDIA_TYPE_MUSIC,
MediaType.MUSIC,
"http://localhost/api/tts_proxy/generated.mp3",
"Text to Speech",
"mp3",
@ -575,15 +566,15 @@ async def test_services_play_media_audio(
@pytest.mark.parametrize(
"content_type, content_id, resolved_name, resolved_format",
[
(MEDIA_TYPE_URL, "http://localhost/media.mp4", "media.mp4", "mp4"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.m4v", "media.m4v", "mp4"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.mov", "media.mov", "mp4"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.mkv", "media.mkv", "mkv"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.mks", "media.mks", "mks"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.m3u8", "media.m3u8", "hls"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.dash", "media.dash", "dash"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.mpd", "media.mpd", "dash"),
(MEDIA_TYPE_VIDEO, "http://localhost/media.ism/manifest", "media.ism", "ism"),
(MediaType.URL, "http://localhost/media.mp4", "media.mp4", "mp4"),
(MediaType.VIDEO, "http://localhost/media.m4v", "media.m4v", "mp4"),
(MediaType.VIDEO, "http://localhost/media.mov", "media.mov", "mp4"),
(MediaType.VIDEO, "http://localhost/media.mkv", "media.mkv", "mkv"),
(MediaType.VIDEO, "http://localhost/media.mks", "media.mks", "mks"),
(MediaType.VIDEO, "http://localhost/media.m3u8", "media.m3u8", "hls"),
(MediaType.VIDEO, "http://localhost/media.dash", "media.dash", "dash"),
(MediaType.VIDEO, "http://localhost/media.mpd", "media.mpd", "dash"),
(MediaType.VIDEO, "http://localhost/media.ism/manifest", "media.ism", "ism"),
],
)
async def test_services_play_media_video(
@ -717,7 +708,7 @@ async def test_tv_services(
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: TV_ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_CHANNEL,
ATTR_MEDIA_CONTENT_TYPE: MediaType.CHANNEL,
ATTR_MEDIA_CONTENT_ID: "55",
},
blocking=True,
@ -752,16 +743,16 @@ async def test_media_browse(
assert msg["result"]
assert msg["result"]["title"] == "Apps"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_content_type"] == MEDIA_TYPE_APPS
assert msg["result"]["children_media_class"] == MEDIA_CLASS_APP
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] == MediaType.APPS
assert msg["result"]["children_media_class"] == MediaClass.APP
assert msg["result"]["can_expand"]
assert not msg["result"]["can_play"]
assert len(msg["result"]["children"]) == 8
assert msg["result"]["children_media_class"] == MEDIA_CLASS_APP
assert msg["result"]["children_media_class"] == MediaClass.APP
assert msg["result"]["children"][0]["title"] == "Roku Channel Store"
assert msg["result"]["children"][0]["media_content_type"] == MEDIA_TYPE_APP
assert msg["result"]["children"][0]["media_content_type"] == MediaType.APP
assert msg["result"]["children"][0]["media_content_id"] == "11"
assert (
msg["result"]["children"][0]["thumbnail"]
@ -811,7 +802,7 @@ async def test_media_browse_internal(
"id": 1,
"type": "media_player/browse_media",
"entity_id": MAIN_ENTITY_ID,
"media_content_type": MEDIA_TYPE_APPS,
"media_content_type": MediaType.APPS,
"media_content_id": "apps",
}
)
@ -824,16 +815,16 @@ async def test_media_browse_internal(
assert msg["result"]
assert msg["result"]["title"] == "Apps"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_content_type"] == MEDIA_TYPE_APPS
assert msg["result"]["children_media_class"] == MEDIA_CLASS_APP
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] == MediaType.APPS
assert msg["result"]["children_media_class"] == MediaClass.APP
assert msg["result"]["can_expand"]
assert not msg["result"]["can_play"]
assert len(msg["result"]["children"]) == 8
assert msg["result"]["children_media_class"] == MEDIA_CLASS_APP
assert msg["result"]["children_media_class"] == MediaClass.APP
assert msg["result"]["children"][0]["title"] == "Roku Channel Store"
assert msg["result"]["children"][0]["media_content_type"] == MEDIA_TYPE_APP
assert msg["result"]["children"][0]["media_content_type"] == MediaType.APP
assert msg["result"]["children"][0]["media_content_id"] == "11"
assert "/query/icon/11" in msg["result"]["children"][0]["thumbnail"]
assert msg["result"]["children"][0]["can_play"]
@ -873,17 +864,17 @@ async def test_media_browse_local_source(
assert msg["result"]
assert msg["result"]["title"] == "Roku"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] == "root"
assert msg["result"]["can_expand"]
assert not msg["result"]["can_play"]
assert len(msg["result"]["children"]) == 2
assert msg["result"]["children"][0]["title"] == "Apps"
assert msg["result"]["children"][0]["media_content_type"] == MEDIA_TYPE_APPS
assert msg["result"]["children"][0]["media_content_type"] == MediaType.APPS
assert msg["result"]["children"][1]["title"] == "Local Media"
assert msg["result"]["children"][1]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["children"][1]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["children"][1]["media_content_type"] is None
assert (
msg["result"]["children"][1]["media_content_id"]
@ -911,7 +902,7 @@ async def test_media_browse_local_source(
assert msg["result"]
assert msg["result"]["title"] == "Local Media"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] is None
assert len(msg["result"]["children"]) == 2
@ -947,12 +938,12 @@ async def test_media_browse_local_source(
assert msg["success"]
assert msg["result"]["title"] == "media"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] == ""
assert len(msg["result"]["children"]) == 2
assert msg["result"]["children"][0]["title"] == "Epic Sax Guy 10 Hours.mp4"
assert msg["result"]["children"][0]["media_class"] == MEDIA_CLASS_VIDEO
assert msg["result"]["children"][0]["media_class"] == MediaClass.VIDEO
assert msg["result"]["children"][0]["media_content_type"] == "video/mp4"
assert (
msg["result"]["children"][0]["media_content_id"]
@ -986,7 +977,7 @@ async def test_tv_media_browse(
assert msg["result"]
assert msg["result"]["title"] == "Roku"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] == "root"
assert msg["result"]["can_expand"]
assert not msg["result"]["can_play"]
@ -998,7 +989,7 @@ async def test_tv_media_browse(
"id": 2,
"type": "media_player/browse_media",
"entity_id": TV_ENTITY_ID,
"media_content_type": MEDIA_TYPE_APPS,
"media_content_type": MediaType.APPS,
"media_content_id": "apps",
}
)
@ -1011,16 +1002,16 @@ async def test_tv_media_browse(
assert msg["result"]
assert msg["result"]["title"] == "Apps"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_content_type"] == MEDIA_TYPE_APPS
assert msg["result"]["children_media_class"] == MEDIA_CLASS_APP
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] == MediaType.APPS
assert msg["result"]["children_media_class"] == MediaClass.APP
assert msg["result"]["can_expand"]
assert not msg["result"]["can_play"]
assert len(msg["result"]["children"]) == 11
assert msg["result"]["children_media_class"] == MEDIA_CLASS_APP
assert msg["result"]["children_media_class"] == MediaClass.APP
assert msg["result"]["children"][0]["title"] == "Satellite TV"
assert msg["result"]["children"][0]["media_content_type"] == MEDIA_TYPE_APP
assert msg["result"]["children"][0]["media_content_type"] == MediaType.APP
assert msg["result"]["children"][0]["media_content_id"] == "tvinput.hdmi2"
assert (
msg["result"]["children"][0]["thumbnail"]
@ -1029,7 +1020,7 @@ async def test_tv_media_browse(
assert msg["result"]["children"][0]["can_play"]
assert msg["result"]["children"][3]["title"] == "Roku Channel Store"
assert msg["result"]["children"][3]["media_content_type"] == MEDIA_TYPE_APP
assert msg["result"]["children"][3]["media_content_type"] == MediaType.APP
assert msg["result"]["children"][3]["media_content_id"] == "11"
assert (
msg["result"]["children"][3]["thumbnail"]
@ -1043,7 +1034,7 @@ async def test_tv_media_browse(
"id": 3,
"type": "media_player/browse_media",
"entity_id": TV_ENTITY_ID,
"media_content_type": MEDIA_TYPE_CHANNELS,
"media_content_type": MediaType.CHANNELS,
"media_content_id": "channels",
}
)
@ -1056,16 +1047,16 @@ async def test_tv_media_browse(
assert msg["result"]
assert msg["result"]["title"] == "TV Channels"
assert msg["result"]["media_class"] == MEDIA_CLASS_DIRECTORY
assert msg["result"]["media_content_type"] == MEDIA_TYPE_CHANNELS
assert msg["result"]["children_media_class"] == MEDIA_CLASS_CHANNEL
assert msg["result"]["media_class"] == MediaClass.DIRECTORY
assert msg["result"]["media_content_type"] == MediaType.CHANNELS
assert msg["result"]["children_media_class"] == MediaClass.CHANNEL
assert msg["result"]["can_expand"]
assert not msg["result"]["can_play"]
assert len(msg["result"]["children"]) == 4
assert msg["result"]["children_media_class"] == MEDIA_CLASS_CHANNEL
assert msg["result"]["children_media_class"] == MediaClass.CHANNEL
assert msg["result"]["children"][0]["title"] == "WhatsOn (1.1)"
assert msg["result"]["children"][0]["media_content_type"] == MEDIA_TYPE_CHANNEL
assert msg["result"]["children"][0]["media_content_type"] == MediaType.CHANNEL
assert msg["result"]["children"][0]["media_content_id"] == "1.1"
assert msg["result"]["children"][0]["can_play"]

View file

@ -23,20 +23,18 @@ from samsungtvws.exceptions import ConnectionFailure, HttpApiError, Unauthorized
from samsungtvws.remote import ChannelEmitCommand, SendRemoteKey
from websockets.exceptions import ConnectionClosedError, WebSocketException
from homeassistant.components.media_player import MediaPlayerDeviceClass
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_INPUT_SOURCE,
ATTR_MEDIA_CONTENT_ID,
ATTR_MEDIA_CONTENT_TYPE,
ATTR_MEDIA_VOLUME_LEVEL,
ATTR_MEDIA_VOLUME_MUTED,
DOMAIN,
MEDIA_TYPE_APP,
MEDIA_TYPE_CHANNEL,
MEDIA_TYPE_URL,
SERVICE_PLAY_MEDIA,
SERVICE_SELECT_SOURCE,
SUPPORT_TURN_ON,
MediaPlayerDeviceClass,
MediaType,
)
from homeassistant.components.samsungtv.const import (
CONF_ON_ACTION,
@ -1120,7 +1118,7 @@ async def test_play_media(hass: HomeAssistant, remote: Mock) -> None:
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_CHANNEL,
ATTR_MEDIA_CONTENT_TYPE: MediaType.CHANNEL,
ATTR_MEDIA_CONTENT_ID: "576",
},
True,
@ -1149,7 +1147,7 @@ async def test_play_media_invalid_type(hass: HomeAssistant) -> None:
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_URL,
ATTR_MEDIA_CONTENT_TYPE: MediaType.URL,
ATTR_MEDIA_CONTENT_ID: url,
},
True,
@ -1171,7 +1169,7 @@ async def test_play_media_channel_as_string(hass: HomeAssistant) -> None:
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_CHANNEL,
ATTR_MEDIA_CONTENT_TYPE: MediaType.CHANNEL,
ATTR_MEDIA_CONTENT_ID: url,
},
True,
@ -1192,7 +1190,7 @@ async def test_play_media_channel_as_non_positive(hass: HomeAssistant) -> None:
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_CHANNEL,
ATTR_MEDIA_CONTENT_TYPE: MediaType.CHANNEL,
ATTR_MEDIA_CONTENT_ID: "-4",
},
True,
@ -1247,7 +1245,7 @@ async def test_play_media_app(hass: HomeAssistant, remotews: Mock) -> None:
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_APP,
ATTR_MEDIA_CONTENT_TYPE: MediaType.APP,
ATTR_MEDIA_CONTENT_ID: "3201608010191",
},
True,

View file

@ -4,12 +4,12 @@ from unittest.mock import Mock, patch
import pytest
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_MEDIA_CONTENT_ID,
ATTR_MEDIA_CONTENT_TYPE,
DOMAIN as MP_DOMAIN,
MEDIA_TYPE_MUSIC,
SERVICE_PLAY_MEDIA,
MediaType,
)
from homeassistant.components.plex import DOMAIN as PLEX_DOMAIN, PLEX_URI_SCHEME
from homeassistant.const import ATTR_ENTITY_ID
@ -38,7 +38,7 @@ async def test_plex_play_media(hass, async_autosetup_sonos):
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: f"{PLEX_URI_SCHEME}{media_content_id}",
},
blocking=True,
@ -47,7 +47,7 @@ async def test_plex_play_media(hass, async_autosetup_sonos):
assert len(mock_lookup.mock_calls) == 1
assert len(mock_add_to_queue.mock_calls) == 1
assert not mock_shuffle.called
assert mock_lookup.mock_calls[0][1][0] == MEDIA_TYPE_MUSIC
assert mock_lookup.mock_calls[0][1][0] == MediaType.MUSIC
assert mock_lookup.mock_calls[0][2] == json.loads(media_content_id)
# Test handling shuffle in payload
@ -60,7 +60,7 @@ async def test_plex_play_media(hass, async_autosetup_sonos):
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: f"{PLEX_URI_SCHEME}{shuffle_media_content_id}",
},
blocking=True,
@ -69,7 +69,7 @@ async def test_plex_play_media(hass, async_autosetup_sonos):
assert mock_shuffle.called
assert len(mock_lookup.mock_calls) == 1
assert len(mock_add_to_queue.mock_calls) == 1
assert mock_lookup.mock_calls[0][1][0] == MEDIA_TYPE_MUSIC
assert mock_lookup.mock_calls[0][1][0] == MediaType.MUSIC
assert mock_lookup.mock_calls[0][2] == json.loads(media_content_id)
# Test failed Plex service call
@ -83,7 +83,7 @@ async def test_plex_play_media(hass, async_autosetup_sonos):
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: f"{PLEX_URI_SCHEME}{media_content_id}",
},
blocking=True,
@ -108,7 +108,7 @@ async def test_plex_play_media(hass, async_autosetup_sonos):
SERVICE_PLAY_MEDIA,
{
ATTR_ENTITY_ID: media_player,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_MUSIC,
ATTR_MEDIA_CONTENT_TYPE: MediaType.MUSIC,
ATTR_MEDIA_CONTENT_ID: f"{PLEX_URI_SCHEME}{server_id}/{plex_item_key}?shuffle=1",
},
blocking=True,

View file

@ -7,13 +7,13 @@ import voluptuous as vol
from homeassistant.components import media_source, tts
from homeassistant.components.demo.tts import DemoProvider
from homeassistant.components.media_player.const import (
from homeassistant.components.media_player import (
ATTR_MEDIA_ANNOUNCE,
ATTR_MEDIA_CONTENT_ID,
ATTR_MEDIA_CONTENT_TYPE,
DOMAIN as DOMAIN_MP,
MEDIA_TYPE_MUSIC,
SERVICE_PLAY_MEDIA,
MediaType,
)
from homeassistant.config import async_process_ha_core_config
from homeassistant.exceptions import HomeAssistantError
@ -93,7 +93,7 @@ async def test_setup_component_and_test_service(hass, empty_cache_dir):
assert len(calls) == 1
assert calls[0].data[ATTR_MEDIA_ANNOUNCE] is True
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert (
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
== "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en_-_demo.mp3"
@ -125,7 +125,7 @@ async def test_setup_component_and_test_service_with_config_language(
blocking=True,
)
assert len(calls) == 1
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert (
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
== "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3"
@ -160,7 +160,7 @@ async def test_setup_component_and_test_service_with_config_language_special(
blocking=True,
)
assert len(calls) == 1
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert (
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
== "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_en-us_-_demo.mp3"
@ -201,7 +201,7 @@ async def test_setup_component_and_test_service_with_service_language(
blocking=True,
)
assert len(calls) == 1
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert (
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
== "/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_-_demo.mp3"
@ -265,7 +265,7 @@ async def test_setup_component_and_test_service_with_service_options(
opt_hash = tts._hash_options({"voice": "alex", "age": 5})
assert len(calls) == 1
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert (
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
== f"/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{opt_hash}_demo.mp3"
@ -302,7 +302,7 @@ async def test_setup_component_and_test_with_service_options_def(hass, empty_cac
opt_hash = tts._hash_options({"voice": "alex"})
assert len(calls) == 1
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert (
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
== f"/api/tts_proxy/42f18378fd4393d18c8dd11d03fa9563c1e54491_de_{opt_hash}_demo.mp3"
@ -366,7 +366,7 @@ async def test_setup_component_and_test_service_with_base_url_set(hass):
blocking=True,
)
assert len(calls) == 1
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_MUSIC
assert calls[0].data[ATTR_MEDIA_CONTENT_TYPE] == MediaType.MUSIC
assert (
await get_media_source_url(hass, calls[0].data[ATTR_MEDIA_CONTENT_ID])
== "http://fnord"

View file

@ -17,11 +17,7 @@ from pyunifiprotect.data import (
)
from pyunifiprotect.exceptions import NvrError
from homeassistant.components.media_player.const import (
MEDIA_CLASS_IMAGE,
MEDIA_CLASS_VIDEO,
)
from homeassistant.components.media_player.errors import BrowseError
from homeassistant.components.media_player import BrowseError, MediaClass
from homeassistant.components.media_source import MediaSourceItem
from homeassistant.components.unifiprotect.const import DOMAIN
from homeassistant.components.unifiprotect.media_source import (
@ -679,7 +675,7 @@ async def test_browse_media_event(
assert browse.identifier == "test_id:event:test_event_id"
assert browse.children is None
assert browse.media_class == MEDIA_CLASS_VIDEO
assert browse.media_class == MediaClass.VIDEO
async def test_browse_media_eventthumb(
@ -710,7 +706,7 @@ async def test_browse_media_eventthumb(
assert browse.identifier == "test_id:eventthumb:test_event_id"
assert browse.children is None
assert browse.media_class == MEDIA_CLASS_IMAGE
assert browse.media_class == MediaClass.IMAGE
@freeze_time("2022-09-15 03:00:00-07:00")

View file

@ -7,10 +7,6 @@ import pytest
from homeassistant.components import automation
from homeassistant.components.media_player import (
DOMAIN as MP_DOMAIN,
MediaPlayerDeviceClass,
)
from homeassistant.components.media_player.const import (
ATTR_INPUT_SOURCE,
ATTR_INPUT_SOURCE_LIST,
ATTR_MEDIA_CONTENT_ID,
@ -18,11 +14,13 @@ from homeassistant.components.media_player.const import (
ATTR_MEDIA_TITLE,
ATTR_MEDIA_VOLUME_LEVEL,
ATTR_MEDIA_VOLUME_MUTED,
MEDIA_TYPE_CHANNEL,
DOMAIN as MP_DOMAIN,
SERVICE_PLAY_MEDIA,
SERVICE_SELECT_SOURCE,
SUPPORT_TURN_ON,
SUPPORT_VOLUME_SET,
MediaPlayerDeviceClass,
MediaType,
)
from homeassistant.components.webostv.const import (
ATTR_BUTTON,
@ -304,7 +302,7 @@ async def test_entity_attributes(hass, client, monkeypatch):
assert attrs[ATTR_MEDIA_VOLUME_LEVEL] == 0.37
assert attrs[ATTR_INPUT_SOURCE] == "Live TV"
assert attrs[ATTR_INPUT_SOURCE_LIST] == ["Input01", "Input02", "Live TV"]
assert attrs[ATTR_MEDIA_CONTENT_TYPE] == MEDIA_TYPE_CHANNEL
assert attrs[ATTR_MEDIA_CONTENT_TYPE] == MediaType.CHANNEL
assert attrs[ATTR_MEDIA_TITLE] == "Channel 1"
assert attrs[ATTR_SOUND_OUTPUT] == "speaker"
@ -373,7 +371,7 @@ async def test_play_media(hass, client, media_id, ch_id):
data = {
ATTR_ENTITY_ID: ENTITY_ID,
ATTR_MEDIA_CONTENT_TYPE: MEDIA_TYPE_CHANNEL,
ATTR_MEDIA_CONTENT_TYPE: MediaType.CHANNEL,
ATTR_MEDIA_CONTENT_ID: media_id,
}
assert await hass.services.async_call(MP_DOMAIN, SERVICE_PLAY_MEDIA, data, True)