1
mirror of https://github.com/home-assistant/core synced 2024-07-30 21:18:57 +02:00

Add default_* to device registry (#38829)

This commit is contained in:
Paulus Schoutsen 2020-08-13 10:38:56 +02:00 committed by GitHub
parent a6cec21c43
commit b3571602bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 59 additions and 5 deletions

View File

@ -12,7 +12,7 @@ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC
from homeassistant.helpers.dispatcher import async_dispatcher_connect
import homeassistant.util.dt as dt_util
from .const import ATTR_MANUFACTURER, DOMAIN
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
@ -115,10 +115,10 @@ class MikrotikHubTracker(ScannerEntity):
"""Return a client description for device registry."""
info = {
"connections": {(CONNECTION_NETWORK_MAC, self.device.mac)},
"manufacturer": ATTR_MANUFACTURER,
"identifiers": {(DOMAIN, self.device.mac)},
"name": self.name,
"via_device": (DOMAIN, self.hub.serial_num),
# We only get generic info from device discovery and so don't want
# to override API specific info that integrations can provide
"default_name": self.name,
}
return info

View File

@ -209,6 +209,9 @@ class DeviceRegistry:
manufacturer=_UNDEF,
model=_UNDEF,
name=_UNDEF,
default_manufacturer=_UNDEF,
default_model=_UNDEF,
default_name=_UNDEF,
sw_version=_UNDEF,
entry_type=_UNDEF,
via_device=None,
@ -236,6 +239,16 @@ class DeviceRegistry:
device = deleted_device.to_device_entry()
self._add_device(device)
else:
if default_manufacturer and not device.manufacturer:
manufacturer = default_manufacturer
if default_model and not device.model:
model = default_model
if default_name and not device.name:
name = default_name
if via_device is not None:
via = self.async_get_device({via_device}, set())
via_device_id = via.id if via else _UNDEF

View File

@ -378,6 +378,9 @@ class EntityPlatform:
"manufacturer",
"model",
"name",
"default_manufacturer",
"default_model",
"default_name",
"sw_version",
"entry_type",
"via_device",

View File

@ -839,3 +839,35 @@ async def test_restore_simple_device(hass, registry, update_events):
assert update_events[2]["device_id"] == entry2.id
assert update_events[3]["action"] == "create"
assert update_events[3]["device_id"] == entry3.id
async def test_get_or_create_sets_default_values(hass, registry):
"""Make sure we do not duplicate entries."""
entry = registry.async_get_or_create(
identifiers={("bridgeid", "0123")}, config_entry_id="1234"
)
assert entry.name is None
assert entry.model is None
assert entry.manufacturer is None
entry = registry.async_get_or_create(
config_entry_id="1234",
identifiers={("bridgeid", "0123")},
default_name="default name 1",
default_model="default model 1",
default_manufacturer="default manufacturer 1",
)
assert entry.name == "default name 1"
assert entry.model == "default model 1"
assert entry.manufacturer == "default manufacturer 1"
entry = registry.async_get_or_create(
config_entry_id="1234",
identifiers={("bridgeid", "0123")},
default_name="default name 2",
default_model="default model 2",
default_manufacturer="default manufacturer 2",
)
assert entry.name == "default name 1"
assert entry.model == "default model 1"
assert entry.manufacturer == "default manufacturer 1"

View File

@ -777,7 +777,13 @@ async def test_device_info_not_overrides(hass):
async_add_entities(
[
MockEntity(
unique_id="qwer", device_info={"connections": {("mac", "abcd")}}
unique_id="qwer",
device_info={
"connections": {("mac", "abcd")},
"default_name": "default name 1",
"default_model": "default model 1",
"default_manufacturer": "default manufacturer 1",
},
)
]
)