mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
SamsungTV: Add unique_id for when missing (legacy models) (#96829)
* Add unique_id for when missing (legacy models) * add comment * update tests, thx @epenet
This commit is contained in:
parent
5272387bd3
commit
fe85b20502
@ -21,7 +21,8 @@ class SamsungTVEntity(Entity):
|
|||||||
self._bridge = bridge
|
self._bridge = bridge
|
||||||
self._mac = config_entry.data.get(CONF_MAC)
|
self._mac = config_entry.data.get(CONF_MAC)
|
||||||
self._attr_name = config_entry.data.get(CONF_NAME)
|
self._attr_name = config_entry.data.get(CONF_NAME)
|
||||||
self._attr_unique_id = config_entry.unique_id
|
# Fallback for legacy models that doesn't have a API to retrieve MAC or SerialNumber
|
||||||
|
self._attr_unique_id = config_entry.unique_id or config_entry.entry_id
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = DeviceInfo(
|
||||||
# Instead of setting the device name to the entity name, samsungtv
|
# Instead of setting the device name to the entity name, samsungtv
|
||||||
# should be updated to set has_entity_name = True
|
# should be updated to set has_entity_name = True
|
||||||
|
55
tests/components/samsungtv/snapshots/test_init.ambr
Normal file
55
tests/components/samsungtv/snapshots/test_init.ambr
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# serializer version: 1
|
||||||
|
# name: test_setup_updates_from_ssdp
|
||||||
|
StateSnapshot({
|
||||||
|
'attributes': ReadOnlyDict({
|
||||||
|
'device_class': 'tv',
|
||||||
|
'friendly_name': 'any',
|
||||||
|
'is_volume_muted': False,
|
||||||
|
'source_list': list([
|
||||||
|
'TV',
|
||||||
|
'HDMI',
|
||||||
|
]),
|
||||||
|
'supported_features': <MediaPlayerEntityFeature: 20413>,
|
||||||
|
}),
|
||||||
|
'context': <ANY>,
|
||||||
|
'entity_id': 'media_player.any',
|
||||||
|
'last_changed': <ANY>,
|
||||||
|
'last_updated': <ANY>,
|
||||||
|
'state': 'on',
|
||||||
|
})
|
||||||
|
# ---
|
||||||
|
# name: test_setup_updates_from_ssdp.1
|
||||||
|
EntityRegistryEntrySnapshot({
|
||||||
|
'aliases': set({
|
||||||
|
}),
|
||||||
|
'area_id': None,
|
||||||
|
'capabilities': dict({
|
||||||
|
'source_list': list([
|
||||||
|
'TV',
|
||||||
|
'HDMI',
|
||||||
|
]),
|
||||||
|
}),
|
||||||
|
'config_entry_id': <ANY>,
|
||||||
|
'device_class': None,
|
||||||
|
'device_id': <ANY>,
|
||||||
|
'disabled_by': None,
|
||||||
|
'domain': 'media_player',
|
||||||
|
'entity_category': None,
|
||||||
|
'entity_id': 'media_player.any',
|
||||||
|
'has_entity_name': False,
|
||||||
|
'hidden_by': None,
|
||||||
|
'icon': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'name': None,
|
||||||
|
'options': dict({
|
||||||
|
}),
|
||||||
|
'original_device_class': <MediaPlayerDeviceClass.TV: 'tv'>,
|
||||||
|
'original_icon': None,
|
||||||
|
'original_name': 'any',
|
||||||
|
'platform': 'samsungtv',
|
||||||
|
'supported_features': <MediaPlayerEntityFeature: 20413>,
|
||||||
|
'translation_key': None,
|
||||||
|
'unique_id': 'sample-entry-id',
|
||||||
|
'unit_of_measurement': None,
|
||||||
|
})
|
||||||
|
# ---
|
@ -2,6 +2,7 @@
|
|||||||
from unittest.mock import Mock, patch
|
from unittest.mock import Mock, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from syrupy.assertion import SnapshotAssertion
|
||||||
|
|
||||||
from homeassistant.components.media_player import DOMAIN, MediaPlayerEntityFeature
|
from homeassistant.components.media_player import DOMAIN, MediaPlayerEntityFeature
|
||||||
from homeassistant.components.samsungtv.const import (
|
from homeassistant.components.samsungtv.const import (
|
||||||
@ -30,6 +31,7 @@ from homeassistant.const import (
|
|||||||
SERVICE_VOLUME_UP,
|
SERVICE_VOLUME_UP,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers import entity_registry as er
|
||||||
|
|
||||||
from . import setup_samsungtv_entry
|
from . import setup_samsungtv_entry
|
||||||
from .const import (
|
from .const import (
|
||||||
@ -115,9 +117,13 @@ async def test_setup_h_j_model(
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("remotews", "remoteencws_failing", "rest_api")
|
@pytest.mark.usefixtures("remotews", "remoteencws_failing", "rest_api")
|
||||||
async def test_setup_updates_from_ssdp(hass: HomeAssistant) -> None:
|
async def test_setup_updates_from_ssdp(
|
||||||
|
hass: HomeAssistant, entity_registry: er.EntityRegistry, snapshot: SnapshotAssertion
|
||||||
|
) -> None:
|
||||||
"""Test setting up the entry fetches data from ssdp cache."""
|
"""Test setting up the entry fetches data from ssdp cache."""
|
||||||
entry = MockConfigEntry(domain="samsungtv", data=MOCK_ENTRYDATA_WS)
|
entry = MockConfigEntry(
|
||||||
|
domain="samsungtv", data=MOCK_ENTRYDATA_WS, entry_id="sample-entry-id"
|
||||||
|
)
|
||||||
entry.add_to_hass(hass)
|
entry.add_to_hass(hass)
|
||||||
|
|
||||||
async def _mock_async_get_discovery_info_by_st(hass: HomeAssistant, mock_st: str):
|
async def _mock_async_get_discovery_info_by_st(hass: HomeAssistant, mock_st: str):
|
||||||
@ -135,7 +141,8 @@ async def test_setup_updates_from_ssdp(hass: HomeAssistant) -> None:
|
|||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert hass.states.get("media_player.any")
|
assert hass.states.get("media_player.any") == snapshot
|
||||||
|
assert entity_registry.async_get("media_player.any") == snapshot
|
||||||
assert (
|
assert (
|
||||||
entry.data[CONF_SSDP_MAIN_TV_AGENT_LOCATION]
|
entry.data[CONF_SSDP_MAIN_TV_AGENT_LOCATION]
|
||||||
== "https://fake_host:12345/tv_agent"
|
== "https://fake_host:12345/tv_agent"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user