Remove mqtt sensor support for last_reset_topic
(#93792)
* Remove mqtt sensor support for `last_reset_topic` * Add cases for empty last reset messages
This commit is contained in:
parent
d421a51576
commit
3a7f9ab57d
2 changed files with 35 additions and 169 deletions
|
@ -480,117 +480,44 @@ async def test_setting_sensor_value_via_mqtt_json_message_and_default_current_st
|
|||
"state_class": "total",
|
||||
"state_topic": "test-topic",
|
||||
"unit_of_measurement": "fav unit",
|
||||
"last_reset_topic": "last-reset-topic",
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
)
|
||||
async def test_setting_sensor_last_reset_via_mqtt_message(
|
||||
hass: HomeAssistant,
|
||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
"""Test the setting of the last_reset property via MQTT."""
|
||||
await mqtt_mock_entry()
|
||||
|
||||
async_fire_mqtt_message(hass, "last-reset-topic", "2020-01-02 08:11:00")
|
||||
state = hass.states.get("sensor.test")
|
||||
assert state.attributes.get("last_reset") == "2020-01-02T08:11:00"
|
||||
assert "'last_reset_topic' must be same as 'state_topic'" in caplog.text
|
||||
assert (
|
||||
"'last_reset_value_template' must be set if 'last_reset_topic' is set"
|
||||
in caplog.text
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"hass_config",
|
||||
[
|
||||
{
|
||||
mqtt.DOMAIN: {
|
||||
sensor.DOMAIN: {
|
||||
"name": "test",
|
||||
"state_class": "total",
|
||||
"state_topic": "test-topic",
|
||||
"unit_of_measurement": "fav unit",
|
||||
"last_reset_topic": "last-reset-topic",
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
)
|
||||
@pytest.mark.parametrize("datestring", ["2020-21-02 08:11:00", "Hello there!"])
|
||||
async def test_setting_sensor_bad_last_reset_via_mqtt_message(
|
||||
hass: HomeAssistant,
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
datestring,
|
||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||
) -> None:
|
||||
"""Test the setting of the last_reset property via MQTT."""
|
||||
await mqtt_mock_entry()
|
||||
|
||||
async_fire_mqtt_message(hass, "last-reset-topic", datestring)
|
||||
state = hass.states.get("sensor.test")
|
||||
assert state.attributes.get("last_reset") is None
|
||||
assert "Invalid last_reset message" in caplog.text
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"hass_config",
|
||||
[
|
||||
{
|
||||
mqtt.DOMAIN: {
|
||||
sensor.DOMAIN: {
|
||||
"name": "test",
|
||||
"state_class": "total",
|
||||
"state_topic": "test-topic",
|
||||
"unit_of_measurement": "fav unit",
|
||||
"last_reset_topic": "last-reset-topic",
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
)
|
||||
async def test_setting_sensor_empty_last_reset_via_mqtt_message(
|
||||
hass: HomeAssistant, mqtt_mock_entry: MqttMockHAClientGenerator
|
||||
) -> None:
|
||||
"""Test the setting of the last_reset property via MQTT."""
|
||||
await mqtt_mock_entry()
|
||||
|
||||
async_fire_mqtt_message(hass, "last-reset-topic", "")
|
||||
state = hass.states.get("sensor.test")
|
||||
assert state.attributes.get("last_reset") is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"hass_config",
|
||||
[
|
||||
{
|
||||
mqtt.DOMAIN: {
|
||||
sensor.DOMAIN: {
|
||||
"name": "test",
|
||||
"state_class": "total",
|
||||
"state_topic": "test-topic",
|
||||
"unit_of_measurement": "fav unit",
|
||||
"last_reset_topic": "last-reset-topic",
|
||||
"last_reset_value_template": "{{ value_json.last_reset }}",
|
||||
"value_template": "{{ value_json.state }}",
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
("message", "last_reset", "state"),
|
||||
[
|
||||
(
|
||||
'{ "last_reset": "2020-01-02 08:11:00" }',
|
||||
"2020-01-02T08:11:00",
|
||||
STATE_UNKNOWN,
|
||||
),
|
||||
(
|
||||
'{ "last_reset": "2020-01-02 08:11:03", "state": 10.0 }',
|
||||
"2020-01-02T08:11:03",
|
||||
"10.0",
|
||||
),
|
||||
('{ "last_reset": null, "state": 10.1 }', None, "10.1"),
|
||||
('{ "last_reset": "", "state": 10.1 }', None, "10.1"),
|
||||
],
|
||||
)
|
||||
async def test_setting_sensor_last_reset_via_mqtt_json_message(
|
||||
hass: HomeAssistant, mqtt_mock_entry: MqttMockHAClientGenerator
|
||||
hass: HomeAssistant,
|
||||
mqtt_mock_entry: MqttMockHAClientGenerator,
|
||||
message: str,
|
||||
last_reset: str,
|
||||
state: str,
|
||||
) -> None:
|
||||
"""Test the setting of the value via MQTT with JSON payload."""
|
||||
await mqtt_mock_entry()
|
||||
|
||||
async_fire_mqtt_message(
|
||||
hass, "last-reset-topic", '{ "last_reset": "2020-01-02 08:11:00" }'
|
||||
)
|
||||
state = hass.states.get("sensor.test")
|
||||
assert state.attributes.get("last_reset") == "2020-01-02T08:11:00"
|
||||
async_fire_mqtt_message(hass, "test-topic", message)
|
||||
sensor_state = hass.states.get("sensor.test")
|
||||
assert sensor_state.attributes.get("last_reset") == last_reset
|
||||
assert sensor_state.state == state
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
@ -608,19 +535,6 @@ async def test_setting_sensor_last_reset_via_mqtt_json_message(
|
|||
},
|
||||
}
|
||||
},
|
||||
{
|
||||
mqtt.DOMAIN: {
|
||||
sensor.DOMAIN: {
|
||||
"name": "test",
|
||||
"state_class": "total",
|
||||
"state_topic": "test-topic",
|
||||
"unit_of_measurement": "kWh",
|
||||
"value_template": "{{ value_json.value | float / 60000 }}",
|
||||
"last_reset_value_template": "{{ utcnow().fromtimestamp(value_json.time / 1000, tz=utcnow().tzinfo) }}",
|
||||
"last_reset_topic": "test-topic",
|
||||
},
|
||||
}
|
||||
},
|
||||
],
|
||||
)
|
||||
async def test_setting_sensor_last_reset_via_mqtt_json_message_2(
|
||||
|
@ -640,11 +554,6 @@ async def test_setting_sensor_last_reset_via_mqtt_json_message_2(
|
|||
state = hass.states.get("sensor.test")
|
||||
assert float(state.state) == pytest.approx(0.015796176944444445)
|
||||
assert state.attributes.get("last_reset") == "2021-08-19T15:05:00+00:00"
|
||||
assert "'last_reset_topic' must be same as 'state_topic'" not in caplog.text
|
||||
assert (
|
||||
"'last_reset_value_template' must be set if 'last_reset_topic' is set"
|
||||
not in caplog.text
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue