core/tests/components/mqtt/test_legacy_vacuum.py

84 lines
2.5 KiB
Python

"""The tests for the Legacy Mqtt vacuum platform."""
# The legacy schema for MQTT vacuum was deprecated with HA Core 2023.8.0
# and was removed with HA Core 2024.2.0
# cleanup is planned with HA Core 2025.2
import json
import pytest
from homeassistant.components import mqtt, vacuum
from homeassistant.core import HomeAssistant
from homeassistant.helpers.typing import DiscoveryInfoType
from tests.common import async_fire_mqtt_message
from tests.typing import MqttMockHAClientGenerator
DEFAULT_CONFIG = {mqtt.DOMAIN: {vacuum.DOMAIN: {"name": "test"}}}
@pytest.mark.parametrize(
("hass_config", "removed"),
[
({mqtt.DOMAIN: {vacuum.DOMAIN: {"name": "test", "schema": "legacy"}}}, True),
({mqtt.DOMAIN: {vacuum.DOMAIN: {"name": "test"}}}, False),
({mqtt.DOMAIN: {vacuum.DOMAIN: {"name": "test", "schema": "state"}}}, True),
],
)
async def test_removed_support_yaml(
hass: HomeAssistant,
mqtt_mock_entry: MqttMockHAClientGenerator,
caplog: pytest.LogCaptureFixture,
removed: bool,
) -> None:
"""Test that the removed support validation for the legacy schema works."""
assert await mqtt_mock_entry()
entity = hass.states.get("vacuum.test")
if removed:
assert entity is None
assert (
"The 'schema' option has been removed, "
"please remove it from your configuration" in caplog.text
)
else:
assert entity is not None
@pytest.mark.parametrize(
("config", "removed"),
[
({"name": "test", "schema": "legacy"}, True),
({"name": "test"}, False),
({"name": "test", "schema": "state"}, True),
],
)
async def test_removed_support_discovery(
hass: HomeAssistant,
mqtt_mock_entry: MqttMockHAClientGenerator,
caplog: pytest.LogCaptureFixture,
config: DiscoveryInfoType,
removed: bool,
) -> None:
"""Test that the removed support validation for the legacy schema works."""
assert await mqtt_mock_entry()
config_payload = json.dumps(config)
async_fire_mqtt_message(hass, "homeassistant/vacuum/test/config", config_payload)
await hass.async_block_till_done()
entity = hass.states.get("vacuum.test")
assert entity is not None
if removed:
assert (
"The 'schema' option has been removed, "
"please remove it from your configuration" in caplog.text
)
else:
assert (
"The 'schema' option has been removed, "
"please remove it from your configuration" not in caplog.text
)