mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Improve test coverage (#59531)
This commit is contained in:
parent
7098260dee
commit
731bec3145
@ -40,6 +40,7 @@ def mz_mock():
|
|||||||
def pycast_mock(castbrowser_mock, castbrowser_constructor_mock):
|
def pycast_mock(castbrowser_mock, castbrowser_constructor_mock):
|
||||||
"""Mock pychromecast."""
|
"""Mock pychromecast."""
|
||||||
pycast_mock = MagicMock()
|
pycast_mock = MagicMock()
|
||||||
|
pycast_mock.IDLE_APP_ID = pychromecast.IDLE_APP_ID
|
||||||
pycast_mock.IGNORE_CEC = []
|
pycast_mock.IGNORE_CEC = []
|
||||||
pycast_mock.discovery.CastBrowser = castbrowser_constructor_mock
|
pycast_mock.discovery.CastBrowser = castbrowser_constructor_mock
|
||||||
pycast_mock.discovery.CastBrowser.return_value = castbrowser_mock
|
pycast_mock.discovery.CastBrowser.return_value = castbrowser_mock
|
||||||
|
@ -27,7 +27,11 @@ from homeassistant.components.media_player.const import (
|
|||||||
SUPPORT_VOLUME_SET,
|
SUPPORT_VOLUME_SET,
|
||||||
)
|
)
|
||||||
from homeassistant.config import async_process_ha_core_config
|
from homeassistant.config import async_process_ha_core_config
|
||||||
from homeassistant.const import ATTR_ENTITY_ID, EVENT_HOMEASSISTANT_STOP
|
from homeassistant.const import (
|
||||||
|
ATTR_ENTITY_ID,
|
||||||
|
CAST_APP_ID_HOMEASSISTANT_LOVELACE,
|
||||||
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import entity_registry as er
|
from homeassistant.helpers import entity_registry as er
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
@ -1025,6 +1029,73 @@ async def test_entity_media_states(hass: HomeAssistant):
|
|||||||
assert state.state == "unknown"
|
assert state.state == "unknown"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_entity_media_states_lovelace_app(hass: HomeAssistant):
|
||||||
|
"""Test various entity media states when the lovelace app is active."""
|
||||||
|
entity_id = "media_player.speaker"
|
||||||
|
reg = er.async_get(hass)
|
||||||
|
|
||||||
|
info = get_fake_chromecast_info()
|
||||||
|
full_info = attr.evolve(
|
||||||
|
info, model_name="google home", friendly_name="Speaker", uuid=FakeUUID
|
||||||
|
)
|
||||||
|
|
||||||
|
chromecast, _ = await async_setup_media_player_cast(hass, info)
|
||||||
|
cast_status_cb, conn_status_cb, media_status_cb = get_status_callbacks(chromecast)
|
||||||
|
|
||||||
|
connection_status = MagicMock()
|
||||||
|
connection_status.status = "CONNECTED"
|
||||||
|
conn_status_cb(connection_status)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state is not None
|
||||||
|
assert state.name == "Speaker"
|
||||||
|
assert state.state == "off"
|
||||||
|
assert entity_id == reg.async_get_entity_id("media_player", "cast", full_info.uuid)
|
||||||
|
|
||||||
|
chromecast.app_id = CAST_APP_ID_HOMEASSISTANT_LOVELACE
|
||||||
|
cast_status = MagicMock()
|
||||||
|
cast_status_cb(cast_status)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state.state == "casting"
|
||||||
|
|
||||||
|
media_status = MagicMock(images=None)
|
||||||
|
media_status.player_is_playing = True
|
||||||
|
media_status_cb(media_status)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state.state == "casting"
|
||||||
|
|
||||||
|
media_status.player_is_playing = False
|
||||||
|
media_status.player_is_paused = True
|
||||||
|
media_status_cb(media_status)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state.state == "casting"
|
||||||
|
|
||||||
|
media_status.player_is_paused = False
|
||||||
|
media_status.player_is_idle = True
|
||||||
|
media_status_cb(media_status)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state.state == "casting"
|
||||||
|
|
||||||
|
chromecast.app_id = pychromecast.IDLE_APP_ID
|
||||||
|
media_status.player_is_idle = False
|
||||||
|
chromecast.is_idle = True
|
||||||
|
media_status_cb(media_status)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state.state == "off"
|
||||||
|
|
||||||
|
chromecast.is_idle = False
|
||||||
|
media_status_cb(media_status)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
state = hass.states.get(entity_id)
|
||||||
|
assert state.state == "unknown"
|
||||||
|
|
||||||
|
|
||||||
async def test_group_media_states(hass, mz_mock):
|
async def test_group_media_states(hass, mz_mock):
|
||||||
"""Test media states are read from group if entity has no state."""
|
"""Test media states are read from group if entity has no state."""
|
||||||
entity_id = "media_player.speaker"
|
entity_id = "media_player.speaker"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user