1
0
mirror of https://github.com/home-assistant/core.git synced 2026-07-01 11:46:40 +01:00

Skip fill sensor for Rituals diffusers without fill data (#174232)

This commit is contained in:
Franck Nijhof
2026-06-19 08:39:35 +02:00
committed by GitHub
parent 5e15c3aeb3
commit 855c2339af
4 changed files with 107 additions and 0 deletions
@@ -40,6 +40,7 @@ ENTITY_DESCRIPTIONS = (
key="fill",
translation_key="fill",
value_fn=lambda diffuser: diffuser.fill,
has_fn=lambda diffuser: "fillc" in diffuser.hub_data.get("sensors", {}),
),
RitualsSensorEntityDescription(
key="perfume",
@@ -63,6 +63,7 @@ def mock_diffuser(
diffuser_mock.version = version
diffuser_mock.wifi_percentage = wifi_percentage
diffuser_mock.data = load_json_object_fixture("data.json", DOMAIN)
diffuser_mock.hub_data = diffuser_mock.data["hub"]
return diffuser_mock
@@ -71,6 +72,24 @@ def mock_diffuser_v1_battery_cartridge() -> MagicMock:
return mock_diffuser(hublot="lot123v1")
def mock_diffuser_v3_no_battery_no_fill() -> MagicMock:
"""Create and return a mock version 3 Diffuser without battery or fill sensor."""
diffuser = mock_diffuser(
hublot="lot123v3",
battery_percentage=Exception(),
charging=Exception(),
fill="",
has_battery=False,
has_cartridge=True,
name="Genie V3",
perfume="Ritual of Sakura",
version="6.0",
)
diffuser.data = load_json_object_fixture("data_no_fill.json", DOMAIN)
diffuser.hub_data = diffuser.data["hub"]
return diffuser
def mock_diffuser_v2_no_battery_no_cartridge() -> MagicMock:
"""Create and return a mock version 2 Diffuser without battery and cartridge."""
return mock_diffuser(
@@ -0,0 +1,70 @@
{
"hub": {
"hublot": "LOT456",
"hash": "abcdef1234567890ghijklmnopqrstuvwxyz",
"status": 1,
"title": null,
"current_time": "2023-06-09T20:50",
"cached_time": "2023-06-09T20:48",
"ping_update": "25",
"attributes": {
"roomc": "4",
"speedc": "3",
"fanc": "1",
"roomnamec": "Living room",
"resetc": "",
"fspacenamec": "",
"fspacetypec": ""
},
"sensors": {
"wific": {
"id": 10,
"sensor_id": 1,
"title": "High",
"description": "",
"icon": "icon-signal.png",
"image": "",
"discover_image": "",
"discover_url": null,
"min_value": "-69.99",
"max_value": "-0.00",
"interval": "1",
"created_at": "2017-03-10 16:17:30",
"updated_at": "2020-06-17 16:57:53",
"default": 0
},
"rfidc": {
"id": 54,
"sensor_id": 4,
"title": "Private Collection Sweet Jasmine",
"description": "",
"icon": "icon-jasmine.png",
"image": "background-jasmine.png",
"discover_image": "discover-jasmine.png",
"discover_url": "sweet-jasmine-cartridge-1105402.html",
"min_value": "05377650",
"max_value": "05377650",
"interval": "",
"created_at": "2019-04-04 07:53:32",
"updated_at": "2021-01-26 14:17:03",
"default": 0
},
"versionc": "6.0",
"ipc": "1682963060"
},
"settings": [
{
"schedule_id": 1835730,
"start": "07:30",
"end": "08:30",
"mon": 1,
"tue": 1,
"wed": 1,
"thu": 1,
"fri": 1,
"sat": 1,
"sun": 1
}
]
}
}
@@ -14,6 +14,7 @@ from .common import (
init_integration,
mock_config_entry,
mock_diffuser_v1_battery_cartridge,
mock_diffuser_v3_no_battery_no_fill,
)
@@ -63,3 +64,19 @@ async def test_sensors_diffuser_v1_battery_cartridge(
assert entry
assert entry.unique_id == f"{hublot}-wifi_percentage"
assert entry.entity_category == EntityCategory.DIAGNOSTIC
async def test_sensors_diffuser_v3_no_fill(
hass: HomeAssistant, entity_registry: er.EntityRegistry
) -> None:
"""Test that a Genie 3.0 without fill sensor data does not create a fill entity."""
config_entry = mock_config_entry(unique_id="id_123_sensor_test_diffuser_v3")
diffuser = mock_diffuser_v3_no_battery_no_fill()
await init_integration(hass, config_entry, [diffuser])
assert hass.states.get("sensor.genie_v3_fill") is None
assert entity_registry.async_get("sensor.genie_v3_fill") is None
state = hass.states.get("sensor.genie_v3_perfume")
assert state
assert state.state == diffuser.perfume