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(
|
DemoLawnMower(
|
||||||
"kitchen_sink_mower_002",
|
"kitchen_sink_mower_002",
|
||||||
|
"Mower can return",
|
||||||
|
LawnMowerActivity.RETURNING,
|
||||||
|
LawnMowerEntityFeature.DOCK
|
||||||
|
| LawnMowerEntityFeature.PAUSE
|
||||||
|
| LawnMowerEntityFeature.START_MOWING,
|
||||||
|
),
|
||||||
|
DemoLawnMower(
|
||||||
|
"kitchen_sink_mower_003",
|
||||||
"Mower can dock",
|
"Mower can dock",
|
||||||
LawnMowerActivity.MOWING,
|
LawnMowerActivity.MOWING,
|
||||||
LawnMowerEntityFeature.DOCK | LawnMowerEntityFeature.START_MOWING,
|
LawnMowerEntityFeature.DOCK | LawnMowerEntityFeature.START_MOWING,
|
||||||
),
|
),
|
||||||
DemoLawnMower(
|
DemoLawnMower(
|
||||||
"kitchen_sink_mower_003",
|
"kitchen_sink_mower_004",
|
||||||
"Mower can pause",
|
"Mower can pause",
|
||||||
LawnMowerActivity.DOCKED,
|
LawnMowerActivity.DOCKED,
|
||||||
LawnMowerEntityFeature.PAUSE | LawnMowerEntityFeature.START_MOWING,
|
LawnMowerEntityFeature.PAUSE | LawnMowerEntityFeature.START_MOWING,
|
||||||
),
|
),
|
||||||
DemoLawnMower(
|
DemoLawnMower(
|
||||||
"kitchen_sink_mower_004",
|
"kitchen_sink_mower_005",
|
||||||
"Mower can do all",
|
"Mower can do all",
|
||||||
LawnMowerActivity.DOCKED,
|
LawnMowerActivity.DOCKED,
|
||||||
LawnMowerEntityFeature.DOCK
|
LawnMowerEntityFeature.DOCK
|
||||||
|
@ -49,7 +57,7 @@ async def async_setup_platform(
|
||||||
| LawnMowerEntityFeature.START_MOWING,
|
| LawnMowerEntityFeature.START_MOWING,
|
||||||
),
|
),
|
||||||
DemoLawnMower(
|
DemoLawnMower(
|
||||||
"kitchen_sink_mower_005",
|
"kitchen_sink_mower_006",
|
||||||
"Mower is paused",
|
"Mower is paused",
|
||||||
LawnMowerActivity.PAUSED,
|
LawnMowerActivity.PAUSED,
|
||||||
LawnMowerEntityFeature.DOCK
|
LawnMowerEntityFeature.DOCK
|
||||||
|
|
|
@ -18,6 +18,9 @@ class LawnMowerActivity(StrEnum):
|
||||||
DOCKED = "docked"
|
DOCKED = "docked"
|
||||||
"""Device is docked."""
|
"""Device is docked."""
|
||||||
|
|
||||||
|
RETURNING = "returning"
|
||||||
|
"""Device is returning."""
|
||||||
|
|
||||||
|
|
||||||
class LawnMowerEntityFeature(IntFlag):
|
class LawnMowerEntityFeature(IntFlag):
|
||||||
"""Supported features of the lawn mower entity."""
|
"""Supported features of the lawn mower entity."""
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
"error": "Error",
|
"error": "Error",
|
||||||
"paused": "[%key:common::state::paused%]",
|
"paused": "[%key:common::state::paused%]",
|
||||||
"mowing": "Mowing",
|
"mowing": "Mowing",
|
||||||
"docked": "Docked"
|
"docked": "Docked",
|
||||||
|
"returning": "Returning"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -49,6 +49,18 @@
|
||||||
'last_updated': <ANY>,
|
'last_updated': <ANY>,
|
||||||
'state': 'docked',
|
'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({
|
StateSnapshot({
|
||||||
'attributes': ReadOnlyDict({
|
'attributes': ReadOnlyDict({
|
||||||
'friendly_name': 'Mower is paused',
|
'friendly_name': 'Mower is paused',
|
||||||
|
|
|
@ -72,6 +72,12 @@ async def test_states(hass: HomeAssistant, snapshot: SnapshotAssertion) -> None:
|
||||||
LawnMowerActivity.MOWING,
|
LawnMowerActivity.MOWING,
|
||||||
LawnMowerActivity.DOCKED,
|
LawnMowerActivity.DOCKED,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
"lawn_mower.mower_can_return",
|
||||||
|
SERVICE_DOCK,
|
||||||
|
LawnMowerActivity.RETURNING,
|
||||||
|
LawnMowerActivity.DOCKED,
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_mower(
|
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")
|
state = hass.states.get("lawn_mower.test_lawn_mower")
|
||||||
assert state.state == "mowing"
|
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")
|
async_fire_mqtt_message(hass, "test/lawn_mower_stat", "docked")
|
||||||
|
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
@ -198,6 +205,13 @@ async def test_value_template(
|
||||||
state = hass.states.get("lawn_mower.test_lawn_mower")
|
state = hass.states.get("lawn_mower.test_lawn_mower")
|
||||||
assert state.state == "paused"
|
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}')
|
async_fire_mqtt_message(hass, "test/lawn_mower_stat", '{"val": null}')
|
||||||
|
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
@ -702,7 +716,8 @@ async def test_mqtt_payload_not_a_valid_activity_warning(
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
"Invalid activity for lawn_mower.test_lawn_mower: 'painting' "
|
"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", "paused", None, "paused"),
|
||||||
("activity_state_topic", "docked", None, "docked"),
|
("activity_state_topic", "docked", None, "docked"),
|
||||||
|
("activity_state_topic", "returning", None, "returning"),
|
||||||
("activity_state_topic", "mowing", None, "mowing"),
|
("activity_state_topic", "mowing", None, "mowing"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue