mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
parent
e0f4da390a
commit
6e2148193a
@ -159,13 +159,12 @@ class HeosCoordinator(DataUpdateCoordinator[None]):
|
||||
|
||||
async def _async_on_reconnected(self) -> None:
|
||||
"""Handle when reconnected so resources are updated and entities marked available."""
|
||||
await self._async_update_players()
|
||||
await self._async_update_sources()
|
||||
_LOGGER.warning("Successfully reconnected to HEOS host %s", self.host)
|
||||
self.async_update_listeners()
|
||||
|
||||
async def _async_on_controller_event(
|
||||
self, event: str, data: PlayerUpdateResult | None
|
||||
self, event: str, data: PlayerUpdateResult | None = None
|
||||
) -> None:
|
||||
"""Handle a controller event, such as players or groups changed."""
|
||||
if event == const.EVENT_PLAYERS_CHANGED:
|
||||
|
@ -8,7 +8,7 @@
|
||||
"iot_class": "local_push",
|
||||
"loggers": ["pyheos"],
|
||||
"quality_scale": "platinum",
|
||||
"requirements": ["pyheos==1.0.2"],
|
||||
"requirements": ["pyheos==1.0.3"],
|
||||
"ssdp": [
|
||||
{
|
||||
"st": "urn:schemas-denon-com:device:ACT-Denon:1"
|
||||
|
2
requirements_all.txt
generated
2
requirements_all.txt
generated
@ -1996,7 +1996,7 @@ pygti==0.9.4
|
||||
pyhaversion==22.8.0
|
||||
|
||||
# homeassistant.components.heos
|
||||
pyheos==1.0.2
|
||||
pyheos==1.0.3
|
||||
|
||||
# homeassistant.components.hive
|
||||
pyhive-integration==1.0.2
|
||||
|
2
requirements_test_all.txt
generated
2
requirements_test_all.txt
generated
@ -1625,7 +1625,7 @@ pygti==0.9.4
|
||||
pyhaversion==22.8.0
|
||||
|
||||
# homeassistant.components.heos
|
||||
pyheos==1.0.2
|
||||
pyheos==1.0.3
|
||||
|
||||
# homeassistant.components.hive
|
||||
pyhive-integration==1.0.2
|
||||
|
@ -106,6 +106,7 @@
|
||||
'model': 'HEOS Drive HS2',
|
||||
'name': 'Test Player',
|
||||
'network': 'wired',
|
||||
'preferred_host': True,
|
||||
'serial': '**REDACTED**',
|
||||
'supported_version': True,
|
||||
'version': '1.0.0',
|
||||
@ -116,6 +117,7 @@
|
||||
'model': 'HEOS Drive HS2',
|
||||
'name': 'Test Player',
|
||||
'network': 'wired',
|
||||
'preferred_host': True,
|
||||
'serial': '**REDACTED**',
|
||||
'supported_version': True,
|
||||
'version': '1.0.0',
|
||||
@ -125,6 +127,7 @@
|
||||
'model': 'Speaker',
|
||||
'name': 'Test Player 2',
|
||||
'network': 'wifi',
|
||||
'preferred_host': False,
|
||||
'serial': '**REDACTED**',
|
||||
'supported_version': True,
|
||||
'version': '1.0.0',
|
||||
@ -137,6 +140,7 @@
|
||||
'model': 'HEOS Drive HS2',
|
||||
'name': 'Test Player',
|
||||
'network': 'wired',
|
||||
'preferred_host': True,
|
||||
'serial': '**REDACTED**',
|
||||
'supported_version': True,
|
||||
'version': '1.0.0',
|
||||
|
@ -285,11 +285,11 @@ async def test_reconnected_new_entities_created(
|
||||
players = controller.players.copy()
|
||||
players[3] = player_factory(3, "Test Player 3", "HEOS Link")
|
||||
controller.mock_set_players(players)
|
||||
controller.load_players.return_value = PlayerUpdateResult([3], [], {})
|
||||
update = PlayerUpdateResult([3], [], {})
|
||||
|
||||
# Simulate reconnection
|
||||
await controller.dispatcher.wait_send(
|
||||
SignalType.HEOS_EVENT, SignalHeosEvent.CONNECTED
|
||||
SignalType.CONTROLLER_EVENT, const.EVENT_PLAYERS_CHANGED, update
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
|
@ -158,7 +158,6 @@ async def test_updates_from_connection_event(
|
||||
state = hass.states.get("media_player.test_player")
|
||||
assert state is not None
|
||||
assert state.state == STATE_IDLE
|
||||
assert controller.load_players.call_count == 1
|
||||
|
||||
# Disconnected
|
||||
controller.load_players.reset_mock()
|
||||
@ -170,11 +169,8 @@ async def test_updates_from_connection_event(
|
||||
state = hass.states.get("media_player.test_player")
|
||||
assert state is not None
|
||||
assert state.state == STATE_UNAVAILABLE
|
||||
assert controller.load_players.call_count == 0
|
||||
|
||||
# Connected handles refresh failure
|
||||
controller.load_players.reset_mock()
|
||||
controller.load_players.side_effect = CommandFailedError("", "Failure", 1)
|
||||
# Reconnect and state updates
|
||||
player.available = True
|
||||
await controller.dispatcher.wait_send(
|
||||
SignalType.HEOS_EVENT, SignalHeosEvent.CONNECTED
|
||||
@ -183,38 +179,6 @@ async def test_updates_from_connection_event(
|
||||
state = hass.states.get("media_player.test_player")
|
||||
assert state is not None
|
||||
assert state.state == STATE_IDLE
|
||||
assert controller.load_players.call_count == 1
|
||||
assert "Unable to refresh players" in caplog.text
|
||||
|
||||
|
||||
async def test_updates_from_connection_event_new_player_ids(
|
||||
hass: HomeAssistant,
|
||||
entity_registry: er.EntityRegistry,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
config_entry: MockConfigEntry,
|
||||
controller: MockHeos,
|
||||
change_data_mapped_ids: PlayerUpdateResult,
|
||||
) -> None:
|
||||
"""Test player ids changed after reconnection updates ids."""
|
||||
config_entry.add_to_hass(hass)
|
||||
assert await hass.config_entries.async_setup(config_entry.entry_id)
|
||||
|
||||
# Assert current IDs
|
||||
assert device_registry.async_get_device(identifiers={(DOMAIN, "1")})
|
||||
assert entity_registry.async_get_entity_id(MEDIA_PLAYER_DOMAIN, DOMAIN, "1")
|
||||
|
||||
# Send event which will result in updated IDs.
|
||||
controller.load_players.return_value = change_data_mapped_ids
|
||||
await controller.dispatcher.wait_send(
|
||||
SignalType.HEOS_EVENT, SignalHeosEvent.CONNECTED
|
||||
)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
# Assert updated IDs and previous don't exist
|
||||
assert not device_registry.async_get_device(identifiers={(DOMAIN, "1")})
|
||||
assert device_registry.async_get_device(identifiers={(DOMAIN, "101")})
|
||||
assert not entity_registry.async_get_entity_id(MEDIA_PLAYER_DOMAIN, DOMAIN, "1")
|
||||
assert entity_registry.async_get_entity_id(MEDIA_PLAYER_DOMAIN, DOMAIN, "101")
|
||||
|
||||
|
||||
async def test_updates_from_sources_updated(
|
||||
|
Loading…
x
Reference in New Issue
Block a user