mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Fix work area sensor in Husqvarna Automower (#121228)
This commit is contained in:
parent
dbe98de82a
commit
1b42b32ac1
@ -184,6 +184,8 @@ RESTRICTED_REASONS: list = [
|
||||
RestrictedReasons.WEEK_SCHEDULE.lower(),
|
||||
]
|
||||
|
||||
STATE_NO_WORK_AREA_ACTIVE = "no_work_area_active"
|
||||
|
||||
|
||||
@callback
|
||||
def _get_work_area_names(data: MowerAttributes) -> list[str]:
|
||||
@ -191,16 +193,21 @@ def _get_work_area_names(data: MowerAttributes) -> list[str]:
|
||||
if TYPE_CHECKING:
|
||||
# Sensor does not get created if it is None
|
||||
assert data.work_areas is not None
|
||||
return [data.work_areas[work_area_id].name for work_area_id in data.work_areas]
|
||||
work_area_list = [
|
||||
data.work_areas[work_area_id].name for work_area_id in data.work_areas
|
||||
]
|
||||
work_area_list.append(STATE_NO_WORK_AREA_ACTIVE)
|
||||
return work_area_list
|
||||
|
||||
|
||||
@callback
|
||||
def _get_current_work_area_name(data: MowerAttributes) -> str:
|
||||
"""Return the name of the current work area."""
|
||||
if data.mower.work_area_id is None:
|
||||
return STATE_NO_WORK_AREA_ACTIVE
|
||||
if TYPE_CHECKING:
|
||||
# Sensor does not get created if values are None
|
||||
assert data.work_areas is not None
|
||||
assert data.mower.work_area_id is not None
|
||||
return data.work_areas[data.mower.work_area_id].name
|
||||
|
||||
|
||||
|
@ -252,7 +252,8 @@
|
||||
"work_area": {
|
||||
"name": "Work area",
|
||||
"state": {
|
||||
"my_lawn": "My lawn"
|
||||
"my_lawn": "My lawn",
|
||||
"no_work_area_active": "No work area active"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1059,6 +1059,7 @@
|
||||
'Front lawn',
|
||||
'Back lawn',
|
||||
'my_lawn',
|
||||
'no_work_area_active',
|
||||
]),
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
@ -1097,6 +1098,7 @@
|
||||
'Front lawn',
|
||||
'Back lawn',
|
||||
'my_lawn',
|
||||
'no_work_area_active',
|
||||
]),
|
||||
}),
|
||||
'context': <ANY>,
|
||||
|
@ -87,6 +87,38 @@ async def test_next_start_sensor(
|
||||
assert state.state == STATE_UNKNOWN
|
||||
|
||||
|
||||
async def test_work_area_sensor(
|
||||
hass: HomeAssistant,
|
||||
mock_automower_client: AsyncMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
freezer: FrozenDateTimeFactory,
|
||||
) -> None:
|
||||
"""Test the work area sensor."""
|
||||
await setup_integration(hass, mock_config_entry)
|
||||
state = hass.states.get("sensor.test_mower_1_work_area")
|
||||
assert state is not None
|
||||
assert state.state == "Front lawn"
|
||||
|
||||
values = mower_list_to_dictionary_dataclass(
|
||||
load_json_value_fixture("mower.json", DOMAIN)
|
||||
)
|
||||
values[TEST_MOWER_ID].mower.work_area_id = None
|
||||
mock_automower_client.get_status.return_value = values
|
||||
freezer.tick(SCAN_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get("sensor.test_mower_1_work_area")
|
||||
assert state.state == "no_work_area_active"
|
||||
|
||||
values[TEST_MOWER_ID].mower.work_area_id = 0
|
||||
mock_automower_client.get_status.return_value = values
|
||||
freezer.tick(SCAN_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get("sensor.test_mower_1_work_area")
|
||||
assert state.state == "my_lawn"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("sensor_to_test"),
|
||||
[
|
||||
|
Loading…
x
Reference in New Issue
Block a user