hass-core/tests/components/dsmr/test_init.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

132 lines
4.8 KiB
Python
Raw Normal View History

"""Tests for the DSMR integration."""
from unittest.mock import MagicMock
import pytest
from homeassistant.components.dsmr.const import DOMAIN
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from tests.common import MockConfigEntry
@pytest.mark.parametrize(
("dsmr_version", "old_unique_id", "new_unique_id"),
[
("5", "1234_Power_Consumption", "1234_current_electricity_usage"),
("5", "1234_Power_Production", "1234_current_electricity_delivery"),
("5", "1234_Power_Tariff", "1234_electricity_active_tariff"),
("5", "1234_Energy_Consumption_(tarif_1)", "1234_electricity_used_tariff_1"),
("5", "1234_Energy_Consumption_(tarif_2)", "1234_electricity_used_tariff_2"),
(
"5",
"1234_Energy_Production_(tarif_1)",
"1234_electricity_delivered_tariff_1",
),
(
"5",
"1234_Energy_Production_(tarif_2)",
"1234_electricity_delivered_tariff_2",
),
(
"5",
"1234_Power_Consumption_Phase_L1",
"1234_instantaneous_active_power_l1_positive",
),
(
"5",
"1234_Power_Consumption_Phase_L2",
"1234_instantaneous_active_power_l2_positive",
),
(
"5",
"1234_Power_Consumption_Phase_L3",
"1234_instantaneous_active_power_l3_positive",
),
(
"5",
"1234_Power_Production_Phase_L1",
"1234_instantaneous_active_power_l1_negative",
),
(
"5",
"1234_Power_Production_Phase_L2",
"1234_instantaneous_active_power_l2_negative",
),
(
"5",
"1234_Power_Production_Phase_L3",
"1234_instantaneous_active_power_l3_negative",
),
("5", "1234_Short_Power_Failure_Count", "1234_short_power_failure_count"),
("5", "1234_Long_Power_Failure_Count", "1234_long_power_failure_count"),
("5", "1234_Voltage_Sags_Phase_L1", "1234_voltage_sag_l1_count"),
("5", "1234_Voltage_Sags_Phase_L2", "1234_voltage_sag_l2_count"),
("5", "1234_Voltage_Sags_Phase_L3", "1234_voltage_sag_l3_count"),
("5", "1234_Voltage_Swells_Phase_L1", "1234_voltage_swell_l1_count"),
("5", "1234_Voltage_Swells_Phase_L2", "1234_voltage_swell_l2_count"),
("5", "1234_Voltage_Swells_Phase_L3", "1234_voltage_swell_l3_count"),
("5", "1234_Voltage_Phase_L1", "1234_instantaneous_voltage_l1"),
("5", "1234_Voltage_Phase_L2", "1234_instantaneous_voltage_l2"),
("5", "1234_Voltage_Phase_L3", "1234_instantaneous_voltage_l3"),
("5", "1234_Current_Phase_L1", "1234_instantaneous_current_l1"),
("5", "1234_Current_Phase_L2", "1234_instantaneous_current_l2"),
("5", "1234_Current_Phase_L3", "1234_instantaneous_current_l3"),
("5B", "1234_Max_power_per_phase", "1234_belgium_max_power_per_phase"),
("5B", "1234_Max_current_per_phase", "1234_belgium_max_current_per_phase"),
("5L", "1234_Energy_Consumption_(total)", "1234_electricity_imported_total"),
("5L", "1234_Energy_Production_(total)", "1234_electricity_exported_total"),
("5", "1234_Gas_Consumption", "1234_hourly_gas_meter_reading"),
("5B", "1234_Gas_Consumption", "1234_belgium_5min_gas_meter_reading"),
("2.2", "1234_Gas_Consumption", "1234_gas_meter_reading"),
],
)
async def test_migrate_unique_id(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
dsmr_connection_fixture: tuple[MagicMock, MagicMock, MagicMock],
dsmr_version: str,
old_unique_id: str,
new_unique_id: str,
) -> None:
"""Test migration of unique_id."""
mock_entry = MockConfigEntry(
domain=DOMAIN,
unique_id="/dev/ttyUSB0",
data={
"port": "/dev/ttyUSB0",
"dsmr_version": dsmr_version,
"serial_id": "1234",
"serial_id_gas": "5678",
},
options={
"time_between_update": 0,
},
)
mock_entry.add_to_hass(hass)
entity: er.RegistryEntry = entity_registry.async_get_or_create(
suggested_object_id="my_sensor",
disabled_by=None,
domain=SENSOR_DOMAIN,
platform=DOMAIN,
unique_id=old_unique_id,
config_entry=mock_entry,
)
assert entity.unique_id == old_unique_id
assert await hass.config_entries.async_setup(mock_entry.entry_id)
await hass.async_block_till_done()
assert (
entity_registry.async_get_entity_id(SENSOR_DOMAIN, DOMAIN, old_unique_id)
is None
)
assert (
entity_registry.async_get_entity_id(SENSOR_DOMAIN, DOMAIN, new_unique_id)
== "sensor.my_sensor"
)