mirror of
https://github.com/home-assistant/core.git
synced 2026-09-25 07:51:46 -05:00
Restore Husqvarna Automower work area sensors and gate by WorkAreaTyp… (#180868)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
co-authored by
Copilot Autofix powered by AI
parent
987e6b3336
commit
bc893b074c
@@ -14,6 +14,7 @@ from aioautomower.model import (
|
||||
MowerModes,
|
||||
RestrictedReasons,
|
||||
WorkArea,
|
||||
WorkAreaType,
|
||||
)
|
||||
|
||||
from homeassistant.components.sensor import (
|
||||
@@ -343,7 +344,7 @@ WORK_AREA_SENSOR_TYPES: tuple[WorkAreaSensorEntityDescription, ...] = (
|
||||
WorkAreaSensorEntityDescription(
|
||||
key="progress",
|
||||
translation_key_fn=_work_area_translation_key,
|
||||
exists_fn=lambda data: data.progress is not None,
|
||||
exists_fn=lambda data: data.type == WorkAreaType.SYSTEMATIC,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
value_fn=attrgetter("progress"),
|
||||
@@ -351,7 +352,7 @@ WORK_AREA_SENSOR_TYPES: tuple[WorkAreaSensorEntityDescription, ...] = (
|
||||
WorkAreaSensorEntityDescription(
|
||||
key="last_time_completed",
|
||||
translation_key_fn=_work_area_translation_key,
|
||||
exists_fn=lambda data: data.last_time_completed is not None,
|
||||
exists_fn=lambda data: data.type == WorkAreaType.SYSTEMATIC,
|
||||
device_class=SensorDeviceClass.TIMESTAMP,
|
||||
value_fn=attrgetter("last_time_completed"),
|
||||
),
|
||||
|
||||
@@ -470,7 +470,7 @@ async def test_add_and_remove_work_area(
|
||||
last_time_completed=datetime(
|
||||
2024, 10, 1, 11, 11, 0, tzinfo=dt_util.get_default_time_zone()
|
||||
),
|
||||
type=WorkAreaType.RANDOM,
|
||||
type=WorkAreaType.SYSTEMATIC,
|
||||
use_global_cutting_height=False,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -10,13 +10,15 @@ from aioautomower.model import (
|
||||
MowerModes,
|
||||
MowerStates,
|
||||
RestrictedReasons,
|
||||
WorkArea,
|
||||
WorkAreaType,
|
||||
)
|
||||
from freezegun.api import FrozenDateTimeFactory
|
||||
import pytest
|
||||
from syrupy.assertion import SnapshotAssertion
|
||||
|
||||
from homeassistant.components.husqvarna_automower.coordinator import SCAN_INTERVAL
|
||||
from homeassistant.const import STATE_UNAVAILABLE, Platform
|
||||
from homeassistant.const import STATE_UNAVAILABLE, STATE_UNKNOWN, Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
|
||||
@@ -144,6 +146,68 @@ async def test_work_area_sensor(
|
||||
assert state.state == STATE_UNAVAILABLE
|
||||
|
||||
|
||||
async def test_work_area_sensor_creation(
|
||||
hass: HomeAssistant,
|
||||
mock_automower_client: AsyncMock,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
freezer: FrozenDateTimeFactory,
|
||||
values: dict[str, MowerAttributes],
|
||||
) -> None:
|
||||
"""Test the work area sensor depending on mower pattern."""
|
||||
values[TEST_MOWER_ID].work_area_names.append("new systematic work area")
|
||||
values[TEST_MOWER_ID].work_area_dict.update({1: "new systematic work area"})
|
||||
values[TEST_MOWER_ID].work_areas.update(
|
||||
{
|
||||
1: WorkArea(
|
||||
name="new systematic work area",
|
||||
cutting_height=12,
|
||||
enabled=True,
|
||||
type=WorkAreaType.SYSTEMATIC,
|
||||
use_global_cutting_height=False,
|
||||
)
|
||||
}
|
||||
)
|
||||
mock_automower_client.get_status.return_value = values
|
||||
await setup_integration(hass, mock_config_entry)
|
||||
freezer.tick(SCAN_INTERVAL)
|
||||
async_fire_time_changed(hass)
|
||||
await hass.async_block_till_done()
|
||||
state = hass.states.get(
|
||||
"sensor.garden_test_mower_1_new_systematic_work_area_progress"
|
||||
)
|
||||
assert state is not None
|
||||
assert state.state == STATE_UNKNOWN
|
||||
state = hass.states.get(
|
||||
"sensor.garden_test_mower_1_new_systematic_work_area_last_time_completed"
|
||||
)
|
||||
assert state is not None
|
||||
assert state.state == STATE_UNKNOWN
|
||||
|
||||
values[TEST_MOWER_ID].work_area_names.append("new random work area")
|
||||
values[TEST_MOWER_ID].work_area_dict.update({2: "new random work area"})
|
||||
values[TEST_MOWER_ID].work_areas.update(
|
||||
{
|
||||
2: WorkArea(
|
||||
name="new random work area",
|
||||
cutting_height=12,
|
||||
enabled=True,
|
||||
type=WorkAreaType.RANDOM,
|
||||
use_global_cutting_height=False,
|
||||
)
|
||||
}
|
||||
)
|
||||
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.garden_test_mower_1_new_random_work_area_progress")
|
||||
assert state is None
|
||||
state = hass.states.get(
|
||||
"sensor.garden_test_mower_1_new_random_work_area_last_time_completed"
|
||||
)
|
||||
assert state is None
|
||||
|
||||
|
||||
async def test_restricted_reason_sensor(
|
||||
hass: HomeAssistant,
|
||||
mock_automower_client: AsyncMock,
|
||||
|
||||
Reference in New Issue
Block a user