From d9fe1edd82d31b8b9d9be956e4d212fad1a44262 Mon Sep 17 00:00:00 2001 From: peteS-UK <64092177+peteS-UK@users.noreply.github.com> Date: Tue, 20 May 2025 22:29:55 +0100 Subject: [PATCH] Add initial coordinator refresh for players in Squeezebox (#145347) * initial * add test for new player --- .../components/squeezebox/__init__.py | 1 + .../squeezebox/test_media_player.py | 34 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/squeezebox/__init__.py b/homeassistant/components/squeezebox/__init__.py index 78a97e38833..13c27f064f7 100644 --- a/homeassistant/components/squeezebox/__init__.py +++ b/homeassistant/components/squeezebox/__init__.py @@ -151,6 +151,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry) - player_coordinator = SqueezeBoxPlayerUpdateCoordinator( hass, entry, player, lms.uuid ) + await player_coordinator.async_refresh() known_players.append(player.player_id) async_dispatcher_send( hass, SIGNAL_PLAYER_DISCOVERED, player_coordinator diff --git a/tests/components/squeezebox/test_media_player.py b/tests/components/squeezebox/test_media_player.py index f3292f1b469..b69f6cc9240 100644 --- a/tests/components/squeezebox/test_media_player.py +++ b/tests/components/squeezebox/test_media_player.py @@ -72,7 +72,12 @@ from homeassistant.helpers.device_registry import DeviceRegistry from homeassistant.helpers.entity_registry import EntityRegistry from homeassistant.util.dt import utcnow -from .conftest import FAKE_VALID_ITEM_ID, TEST_MAC, TEST_VOLUME_STEP +from .conftest import ( + FAKE_VALID_ITEM_ID, + TEST_MAC, + TEST_VOLUME_STEP, + configure_squeezebox_media_player_platform, +) from tests.common import MockConfigEntry, async_fire_time_changed, snapshot_platform @@ -100,6 +105,33 @@ async def test_entity_registry( await snapshot_platform(hass, entity_registry, snapshot, config_entry.entry_id) +async def test_squeezebox_new_player_discovery( + hass: HomeAssistant, + config_entry: MockConfigEntry, + lms: MagicMock, + player_factory: MagicMock, + freezer: FrozenDateTimeFactory, +) -> None: + """Test discovery of a new squeezebox player.""" + # Initial setup with one player (from the 'lms' fixture) + await configure_squeezebox_media_player_platform(hass, config_entry, lms) + await hass.async_block_till_done(wait_background_tasks=True) + assert hass.states.get("media_player.test_player") is not None + assert hass.states.get("media_player.test_player_2") is None + + # Simulate a new player appearing + new_player_mock = player_factory(TEST_MAC[1]) + lms.async_get_players.return_value = [ + lms.async_get_players.return_value[0], + new_player_mock, + ] + + freezer.tick(timedelta(seconds=DISCOVERY_INTERVAL)) + async_fire_time_changed(hass) + await hass.async_block_till_done() + assert hass.states.get("media_player.test_player_2") is not None + + async def test_squeezebox_player_rediscovery( hass: HomeAssistant, configured_player: MagicMock, freezer: FrozenDateTimeFactory ) -> None: