Set up Denon receivers that report no serial number (#180501)

This commit is contained in:
Franck Nijhof
2026-08-28 19:24:31 +02:00
committed by GitHub
parent 5539268067
commit e4c3e3509d
2 changed files with 21 additions and 5 deletions
@@ -244,11 +244,10 @@ class DenonDevice(MediaPlayerEntity):
) -> None:
"""Initialize the device."""
self._attr_unique_id = unique_id
assert config_entry.unique_id
self._attr_device_info = DeviceInfo(
configuration_url=f"http://{config_entry.data[CONF_HOST]}/",
hw_version=config_entry.data[CONF_TYPE],
identifiers={(DOMAIN, config_entry.unique_id)},
identifiers={(DOMAIN, config_entry.unique_id or config_entry.entry_id)},
manufacturer=config_entry.data[CONF_MANUFACTURER],
model=config_entry.data[CONF_MODEL],
name=receiver.name,
+20 -3
View File
@@ -23,6 +23,7 @@ from homeassistant.components.denonavr.services import (
)
from homeassistant.const import ATTR_ENTITY_ID, CONF_HOST, CONF_MODEL, STATE_UNAVAILABLE
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from tests.common import MockConfigEntry, async_fire_time_changed
@@ -63,19 +64,21 @@ def client_fixture():
yield mock_client_class.return_value
async def setup_denonavr(hass: HomeAssistant) -> None:
async def setup_denonavr(
hass: HomeAssistant, serial_number: str | None = TEST_SERIALNUMBER
) -> MockConfigEntry:
"""Initialize media_player for tests."""
entry_data = {
CONF_HOST: TEST_HOST,
CONF_MODEL: TEST_MODEL,
CONF_TYPE: TEST_RECEIVER_TYPE,
CONF_MANUFACTURER: TEST_MANUFACTURER,
CONF_SERIAL_NUMBER: TEST_SERIALNUMBER,
CONF_SERIAL_NUMBER: serial_number,
}
mock_entry = MockConfigEntry(
domain=DOMAIN,
unique_id=TEST_UNIQUE_ID,
unique_id=TEST_UNIQUE_ID if serial_number else None,
data=entry_data,
)
@@ -89,6 +92,20 @@ async def setup_denonavr(hass: HomeAssistant) -> None:
assert state
assert state.name == TEST_NAME
return mock_entry
@pytest.mark.usefixtures("client")
async def test_setup_without_serial_number(
hass: HomeAssistant, device_registry: dr.DeviceRegistry
) -> None:
"""Test a receiver reporting no serial number still gets its media player."""
entry = await setup_denonavr(hass, serial_number=None)
assert device_registry.async_get_device_by_identifier(
(DOMAIN, entry.entry_id), entry.entry_id
)
async def test_get_command(hass: HomeAssistant, client) -> None:
"""Test generic command functionality."""