mirror of
https://github.com/home-assistant/core.git
synced 2026-09-24 07:25:52 -05:00
Fix Rituals Perfume Genie sw_version dict passed to device registry (#173552)
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
"""Base class for Rituals Perfume Genie diffuser entity."""
|
||||
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.helpers.device_registry import DeviceInfo
|
||||
from homeassistant.helpers.entity import EntityDescription
|
||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||
@@ -12,6 +14,12 @@ MODEL = "The Perfume Genie"
|
||||
MODEL2 = "The Perfume Genie 2.0"
|
||||
|
||||
|
||||
def _version_string(version: Any) -> str:
|
||||
if isinstance(version, dict):
|
||||
return str(version.get("title", version))
|
||||
return str(version)
|
||||
|
||||
|
||||
class DiffuserEntity(CoordinatorEntity[RitualsDataUpdateCoordinator]):
|
||||
"""Representation of a diffuser entity."""
|
||||
|
||||
@@ -31,7 +39,7 @@ class DiffuserEntity(CoordinatorEntity[RitualsDataUpdateCoordinator]):
|
||||
manufacturer=MANUFACTURER,
|
||||
model=MODEL if coordinator.diffuser.has_battery else MODEL2,
|
||||
name=coordinator.diffuser.name,
|
||||
sw_version=coordinator.diffuser.version,
|
||||
sw_version=_version_string(coordinator.diffuser.version),
|
||||
)
|
||||
|
||||
@property
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
"""Tests for the Rituals Perfume Genie switch platform."""
|
||||
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.homeassistant import (
|
||||
DOMAIN as HOMEASSISTANT_DOMAIN,
|
||||
SERVICE_UPDATE_ENTITY,
|
||||
@@ -13,12 +17,13 @@ from homeassistant.const import (
|
||||
STATE_ON,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from .common import (
|
||||
init_integration,
|
||||
mock_config_entry,
|
||||
mock_diffuser,
|
||||
mock_diffuser_v1_battery_cartridge,
|
||||
)
|
||||
|
||||
@@ -71,6 +76,28 @@ async def test_switch_handle_coordinator_update(hass: HomeAssistant) -> None:
|
||||
assert diffuser.update_data.call_count == call_count_before_update + 1
|
||||
|
||||
|
||||
async def test_device_info_sw_version_dict(
|
||||
hass: HomeAssistant,
|
||||
device_registry: dr.DeviceRegistry,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
"""Test that sw_version is a string even when the library returns a dict."""
|
||||
diffuser = mock_diffuser(
|
||||
hublot="lot123dict",
|
||||
version={"id": 1, "title": "5.2-rc15", "icon": ""},
|
||||
)
|
||||
config_entry = mock_config_entry(unique_id="id_123_version_dict_test")
|
||||
with caplog.at_level(logging.WARNING, logger="homeassistant.helpers.frame"):
|
||||
await init_integration(hass, config_entry, [diffuser])
|
||||
|
||||
device_entry = device_registry.async_get_device(
|
||||
identifiers={("rituals_perfume_genie", "lot123dict")}
|
||||
)
|
||||
assert device_entry
|
||||
assert device_entry.sw_version == "5.2-rc15"
|
||||
assert "non-string value" not in caplog.text
|
||||
|
||||
|
||||
async def test_set_switch_state(hass: HomeAssistant) -> None:
|
||||
"""Test changing the diffuser switch entity state."""
|
||||
config_entry = mock_config_entry(unique_id="id_123_switch_set_state_test")
|
||||
|
||||
Reference in New Issue
Block a user