Skip to content

Commit

Permalink
Fix unique_id generation for AtwZoneSensors
Browse files Browse the repository at this point in the history
The existing unique_id generation generated the same ids for both zones
in 2 zone setups. This change adds a zone-<index> suffix to the id breaking
existing 1 zone setups.
  • Loading branch information
vilppuvuorinen committed Jun 1, 2021
1 parent 3d45f00 commit 9e91b6f
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
3 changes: 2 additions & 1 deletion homeassistant/components/melcloud/sensor.py
Expand Up @@ -165,7 +165,8 @@ class AtwZoneSensor(MelDeviceSensor):

def __init__(self, api: MelCloudDevice, zone: Zone, measurement, definition):
"""Initialize the sensor."""
super().__init__(api, measurement, definition)
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}"

Expand Down
41 changes: 41 additions & 0 deletions 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-zone-1"

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"

0 comments on commit 9e91b6f

Please sign in to comment.