Add LawnMowerActivity.RETURNING to Lawn Mower (#124261)
* Add returning activity state * update tests * update tests * set can return to returning state * update MQTT tests * update mqtt back to docked * fix up other tests that I broke again * re-add mower_can_dock
This commit is contained in:
parent
5d64155bb6
commit
3a92899081
6 changed files with 51 additions and 5 deletions
|
@ -30,18 +30,26 @@ async def async_setup_platform(
|
|||
),
|
||||
DemoLawnMower(
|
||||
"kitchen_sink_mower_002",
|
||||
"Mower can return",
|
||||
LawnMowerActivity.RETURNING,
|
||||
LawnMowerEntityFeature.DOCK
|
||||
| LawnMowerEntityFeature.PAUSE
|
||||
| LawnMowerEntityFeature.START_MOWING,
|
||||
),
|
||||
DemoLawnMower(
|
||||
"kitchen_sink_mower_003",
|
||||
"Mower can dock",
|
||||
LawnMowerActivity.MOWING,
|
||||
LawnMowerEntityFeature.DOCK | LawnMowerEntityFeature.START_MOWING,
|
||||
),
|
||||
DemoLawnMower(
|
||||
"kitchen_sink_mower_003",
|
||||
"kitchen_sink_mower_004",
|
||||
"Mower can pause",
|
||||
LawnMowerActivity.DOCKED,
|
||||
LawnMowerEntityFeature.PAUSE | LawnMowerEntityFeature.START_MOWING,
|
||||
),
|
||||
DemoLawnMower(
|
||||
"kitchen_sink_mower_004",
|
||||
"kitchen_sink_mower_005",
|
||||
"Mower can do all",
|
||||
LawnMowerActivity.DOCKED,
|
||||
LawnMowerEntityFeature.DOCK
|
||||
|
@ -49,7 +57,7 @@ async def async_setup_platform(
|
|||
| LawnMowerEntityFeature.START_MOWING,
|
||||
),
|
||||
DemoLawnMower(
|
||||
"kitchen_sink_mower_005",
|
||||
"kitchen_sink_mower_006",
|
||||
"Mower is paused",
|
||||
LawnMowerActivity.PAUSED,
|
||||
LawnMowerEntityFeature.DOCK
|
||||
|
|
|
@ -18,6 +18,9 @@ class LawnMowerActivity(StrEnum):
|
|||
DOCKED = "docked"
|
||||
"""Device is docked."""
|
||||
|
||||
RETURNING = "returning"
|
||||
"""Device is returning."""
|
||||
|
||||
|
||||
class LawnMowerEntityFeature(IntFlag):
|
||||
"""Supported features of the lawn mower entity."""
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
"error": "Error",
|
||||
"paused": "[%key:common::state::paused%]",
|
||||
"mowing": "Mowing",
|
||||
"docked": "Docked"
|
||||
"docked": "Docked",
|
||||
"returning": "Returning"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -49,6 +49,18 @@
|
|||
'last_updated': <ANY>,
|
||||
'state': 'docked',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mower can return',
|
||||
'supported_features': <LawnMowerEntityFeature: 7>,
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'lawn_mower.mower_can_return',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'returning',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Mower is paused',
|
||||
|
|
|
@ -72,6 +72,12 @@ async def test_states(hass: HomeAssistant, snapshot: SnapshotAssertion) -> None:
|
|||
LawnMowerActivity.MOWING,
|
||||
LawnMowerActivity.DOCKED,
|
||||
),
|
||||
(
|
||||
"lawn_mower.mower_can_return",
|
||||
SERVICE_DOCK,
|
||||
LawnMowerActivity.RETURNING,
|
||||
LawnMowerActivity.DOCKED,
|
||||
),
|
||||
],
|
||||
)
|
||||
async def test_mower(
|
||||
|
|
|
@ -103,6 +103,13 @@ async def test_run_lawn_mower_setup_and_state_updates(
|
|||
state = hass.states.get("lawn_mower.test_lawn_mower")
|
||||
assert state.state == "mowing"
|
||||
|
||||
async_fire_mqtt_message(hass, "test/lawn_mower_stat", "returning")
|
||||
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get("lawn_mower.test_lawn_mower")
|
||||
assert state.state == "returning"
|
||||
|
||||
async_fire_mqtt_message(hass, "test/lawn_mower_stat", "docked")
|
||||
|
||||
await hass.async_block_till_done()
|
||||
|
@ -198,6 +205,13 @@ async def test_value_template(
|
|||
state = hass.states.get("lawn_mower.test_lawn_mower")
|
||||
assert state.state == "paused"
|
||||
|
||||
async_fire_mqtt_message(hass, "test/lawn_mower_stat", '{"val":"returning"}')
|
||||
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get("lawn_mower.test_lawn_mower")
|
||||
assert state.state == "returning"
|
||||
|
||||
async_fire_mqtt_message(hass, "test/lawn_mower_stat", '{"val": null}')
|
||||
|
||||
await hass.async_block_till_done()
|
||||
|
@ -702,7 +716,8 @@ async def test_mqtt_payload_not_a_valid_activity_warning(
|
|||
|
||||
assert (
|
||||
"Invalid activity for lawn_mower.test_lawn_mower: 'painting' "
|
||||
"(valid activities: ['error', 'paused', 'mowing', 'docked'])" in caplog.text
|
||||
"(valid activities: ['error', 'paused', 'mowing', 'docked', 'returning'])"
|
||||
in caplog.text
|
||||
)
|
||||
|
||||
|
||||
|
@ -774,6 +789,7 @@ async def test_reloadable(
|
|||
[
|
||||
("activity_state_topic", "paused", None, "paused"),
|
||||
("activity_state_topic", "docked", None, "docked"),
|
||||
("activity_state_topic", "returning", None, "returning"),
|
||||
("activity_state_topic", "mowing", None, "mowing"),
|
||||
],
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue