mirror of
https://github.com/home-assistant/core.git
synced 2025-08-09 15:45:08 +02:00
fixes
This commit is contained in:
@@ -163,11 +163,6 @@ class DlnaDmrEntity(MediaPlayerEntity):
|
|||||||
|
|
||||||
async def async_added_to_hass(self) -> None:
|
async def async_added_to_hass(self) -> None:
|
||||||
"""Handle addition."""
|
"""Handle addition."""
|
||||||
self._background_setup_task = self.hass.async_create_background_task(
|
|
||||||
self._async_setup(), f"dlna_dmr {self.name} setup"
|
|
||||||
)
|
|
||||||
|
|
||||||
async def _async_setup(self) -> None:
|
|
||||||
# Update this entity when the associated config entry is modified
|
# Update this entity when the associated config entry is modified
|
||||||
if self.registry_entry and self.registry_entry.config_entry_id:
|
if self.registry_entry and self.registry_entry.config_entry_id:
|
||||||
config_entry = self.hass.config_entries.async_get_entry(
|
config_entry = self.hass.config_entries.async_get_entry(
|
||||||
@@ -178,13 +173,6 @@ class DlnaDmrEntity(MediaPlayerEntity):
|
|||||||
config_entry.add_update_listener(self.async_config_update_listener)
|
config_entry.add_update_listener(self.async_config_update_listener)
|
||||||
)
|
)
|
||||||
|
|
||||||
# Try to connect to the last known location, but don't worry if not available
|
|
||||||
if not self._device:
|
|
||||||
try:
|
|
||||||
await self._device_connect(self.location)
|
|
||||||
except UpnpError as err:
|
|
||||||
_LOGGER.debug("Couldn't connect immediately: %r", err)
|
|
||||||
|
|
||||||
# Get SSDP notifications for only this device
|
# Get SSDP notifications for only this device
|
||||||
self.async_on_remove(
|
self.async_on_remove(
|
||||||
await ssdp.async_register_callback(
|
await ssdp.async_register_callback(
|
||||||
@@ -204,6 +192,18 @@ class DlnaDmrEntity(MediaPlayerEntity):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not self._device:
|
||||||
|
self._background_setup_task = self.hass.async_create_background_task(
|
||||||
|
self._async_setup(), f"dlna_dmr {self.name} setup"
|
||||||
|
)
|
||||||
|
|
||||||
|
async def _async_setup(self) -> None:
|
||||||
|
# Try to connect to the last known location, but don't worry if not available
|
||||||
|
try:
|
||||||
|
await self._device_connect(self.location)
|
||||||
|
except UpnpError as err:
|
||||||
|
_LOGGER.debug("Couldn't connect immediately: %r", err)
|
||||||
|
|
||||||
async def async_will_remove_from_hass(self) -> None:
|
async def async_will_remove_from_hass(self) -> None:
|
||||||
"""Handle removal."""
|
"""Handle removal."""
|
||||||
if self._background_setup_task:
|
if self._background_setup_task:
|
||||||
|
@@ -6,6 +6,7 @@ from homeassistant.components import media_player
|
|||||||
from homeassistant.components.dlna_dmr.const import DOMAIN as DLNA_DOMAIN
|
from homeassistant.components.dlna_dmr.const import DOMAIN as DLNA_DOMAIN
|
||||||
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.entity_component import async_update_entity
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
@@ -31,6 +32,10 @@ async def test_resource_lifecycle(
|
|||||||
)
|
)
|
||||||
assert len(entries) == 1
|
assert len(entries) == 1
|
||||||
entity_id = entries[0].entity_id
|
entity_id = entries[0].entity_id
|
||||||
|
|
||||||
|
await async_update_entity(hass, entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
mock_state = hass.states.get(entity_id)
|
mock_state = hass.states.get(entity_id)
|
||||||
assert mock_state is not None
|
assert mock_state is not None
|
||||||
assert mock_state.state == media_player.STATE_IDLE
|
assert mock_state.state == media_player.STATE_IDLE
|
||||||
|
@@ -216,6 +216,9 @@ async def test_setup_entry_no_options(
|
|||||||
"""
|
"""
|
||||||
config_entry_mock.options = MappingProxyType({})
|
config_entry_mock.options = MappingProxyType({})
|
||||||
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
mock_state = hass.states.get(mock_entity_id)
|
||||||
assert mock_state is not None
|
assert mock_state is not None
|
||||||
|
|
||||||
@@ -285,6 +288,8 @@ async def test_setup_entry_with_options(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
mock_state = hass.states.get(mock_entity_id)
|
||||||
assert mock_state is not None
|
assert mock_state is not None
|
||||||
|
|
||||||
@@ -343,8 +348,9 @@ async def test_setup_entry_mac_address(
|
|||||||
dmr_device_mock: Mock,
|
dmr_device_mock: Mock,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Entry with a MAC address will set up and set the device registry connection."""
|
"""Entry with a MAC address will set up and set the device registry connection."""
|
||||||
await setup_mock_component(hass, config_entry_mock)
|
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
# Check the device registry connections for MAC address
|
# Check the device registry connections for MAC address
|
||||||
dev_reg = async_get_dr(hass)
|
dev_reg = async_get_dr(hass)
|
||||||
device = dev_reg.async_get_device(
|
device = dev_reg.async_get_device(
|
||||||
@@ -363,8 +369,9 @@ async def test_setup_entry_no_mac_address(
|
|||||||
dmr_device_mock: Mock,
|
dmr_device_mock: Mock,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Test setting up an entry without a MAC address will succeed."""
|
"""Test setting up an entry without a MAC address will succeed."""
|
||||||
await setup_mock_component(hass, config_entry_mock_no_mac)
|
mock_entity_id = await setup_mock_component(hass, config_entry_mock_no_mac)
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
# Check the device registry connections does not include the MAC address
|
# Check the device registry connections does not include the MAC address
|
||||||
dev_reg = async_get_dr(hass)
|
dev_reg = async_get_dr(hass)
|
||||||
device = dev_reg.async_get_device(
|
device = dev_reg.async_get_device(
|
||||||
@@ -382,6 +389,8 @@ async def test_event_subscribe_failure(
|
|||||||
dmr_device_mock.async_subscribe_services.side_effect = UpnpError
|
dmr_device_mock.async_subscribe_services.side_effect = UpnpError
|
||||||
|
|
||||||
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
mock_state = hass.states.get(mock_entity_id)
|
||||||
assert mock_state is not None
|
assert mock_state is not None
|
||||||
|
|
||||||
@@ -412,6 +421,8 @@ async def test_event_subscribe_rejected(
|
|||||||
dmr_device_mock.async_subscribe_services.side_effect = UpnpResponseError(status=501)
|
dmr_device_mock.async_subscribe_services.side_effect = UpnpResponseError(status=501)
|
||||||
|
|
||||||
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
mock_state = hass.states.get(mock_entity_id)
|
||||||
assert mock_state is not None
|
assert mock_state is not None
|
||||||
|
|
||||||
@@ -432,6 +443,8 @@ async def test_available_device(
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Test a DlnaDmrEntity with a connected DmrDevice."""
|
"""Test a DlnaDmrEntity with a connected DmrDevice."""
|
||||||
# Check hass device information is filled in
|
# Check hass device information is filled in
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
|
await hass.async_block_till_done()
|
||||||
dev_reg = async_get_dr(hass)
|
dev_reg = async_get_dr(hass)
|
||||||
device = dev_reg.async_get_device(
|
device = dev_reg.async_get_device(
|
||||||
connections={(CONNECTION_UPNP, MOCK_DEVICE_UDN)},
|
connections={(CONNECTION_UPNP, MOCK_DEVICE_UDN)},
|
||||||
@@ -1366,6 +1379,7 @@ async def test_become_available(
|
|||||||
# Cause connection attempts to fail before adding entity
|
# Cause connection attempts to fail before adding entity
|
||||||
domain_data_mock.upnp_factory.async_create_device.side_effect = UpnpConnectionError
|
domain_data_mock.upnp_factory.async_create_device.side_effect = UpnpConnectionError
|
||||||
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
mock_entity_id = await setup_mock_component(hass, config_entry_mock)
|
||||||
|
await async_update_entity(hass, mock_entity_id)
|
||||||
mock_state = hass.states.get(mock_entity_id)
|
mock_state = hass.states.get(mock_entity_id)
|
||||||
assert mock_state is not None
|
assert mock_state is not None
|
||||||
assert mock_state.state == ha_const.STATE_UNAVAILABLE
|
assert mock_state.state == ha_const.STATE_UNAVAILABLE
|
||||||
|
Reference in New Issue
Block a user