From 4ba5a4f36ede22678d4c6943f61099c91055f806 Mon Sep 17 00:00:00 2001 From: Vilppu Vuorinen Date: Mon, 28 Jun 2021 13:20:40 +0300 Subject: [PATCH] Fix unique_id generation for AtwZoneSensors (#51227) --- homeassistant/components/melcloud/sensor.py | 6 ++- .../melcloud/test_atw_zone_sensor.py | 41 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 tests/components/melcloud/test_atw_zone_sensor.py diff --git a/homeassistant/components/melcloud/sensor.py b/homeassistant/components/melcloud/sensor.py index 356992ece11..2c59763dc72 100644 --- a/homeassistant/components/melcloud/sensor.py +++ b/homeassistant/components/melcloud/sensor.py @@ -165,7 +165,11 @@ class AtwZoneSensor(MelDeviceSensor): def __init__(self, api: MelCloudDevice, zone: Zone, measurement, definition): """Initialize the sensor.""" - super().__init__(api, measurement, definition) + if zone.zone_index == 1: + full_measurement = measurement + else: + full_measurement = f"{measurement}-zone-{zone.zone_index}" + super().__init__(api, full_measurement, definition) self._zone = zone self._name_slug = f"{api.name} {zone.name}" diff --git a/tests/components/melcloud/test_atw_zone_sensor.py b/tests/components/melcloud/test_atw_zone_sensor.py new file mode 100644 index 00000000000..ac34a5ccc49 --- /dev/null +++ b/tests/components/melcloud/test_atw_zone_sensor.py @@ -0,0 +1,41 @@ +"""Test the MELCloud ATW zone sensor.""" +from unittest.mock import patch + +import pytest + +from homeassistant.components.melcloud.sensor import AtwZoneSensor + + +@pytest.fixture +def mock_device(): + """Mock MELCloud device.""" + with patch("homeassistant.components.melcloud.MelCloudDevice") as mock: + mock.name = "name" + mock.device.serial = 1234 + mock.device.mac = "11:11:11:11:11:11" + yield mock + + +@pytest.fixture +def mock_zone_1(): + """Mock zone 1.""" + with patch("pymelcloud.atw_device.Zone") as mock: + mock.zone_index = 1 + yield mock + + +@pytest.fixture +def mock_zone_2(): + """Mock zone 2.""" + with patch("pymelcloud.atw_device.Zone") as mock: + mock.zone_index = 2 + yield mock + + +def test_zone_unique_ids(mock_device, mock_zone_1, mock_zone_2): + """Test unique id generation correctness.""" + sensor_1 = AtwZoneSensor(mock_device, mock_zone_1, "room_temperature", {}) + assert sensor_1.unique_id == "1234-11:11:11:11:11:11-room_temperature" + + sensor_2 = AtwZoneSensor(mock_device, mock_zone_2, "room_temperature", {}) + assert sensor_2.unique_id == "1234-11:11:11:11:11:11-room_temperature-zone-2"