From 3effc2e182d33f693d6ba96d0726c353c79e5d4d Mon Sep 17 00:00:00 2001
From: puddly <32534428+puddly@users.noreply.github.com>
Date: Wed, 26 Feb 2025 15:22:08 -0500
Subject: [PATCH] Bump ZHA to 0.0.51 (#139383)

* Bump ZHA to 0.0.51

* Fix unit tests not accounting for primary entities
---
 homeassistant/components/zha/entity.py        |  4 ++++
 homeassistant/components/zha/manifest.json    |  2 +-
 requirements_all.txt                          |  2 +-
 requirements_test_all.txt                     |  2 +-
 .../zha/snapshots/test_diagnostics.ambr       | 11 +---------
 tests/components/zha/test_sensor.py           | 21 ++++++++++++-------
 tests/components/zha/test_websocket_api.py    |  7 +++++--
 7 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/homeassistant/components/zha/entity.py b/homeassistant/components/zha/entity.py
index 499721722fa..e3339661d15 100644
--- a/homeassistant/components/zha/entity.py
+++ b/homeassistant/components/zha/entity.py
@@ -59,6 +59,10 @@ class ZHAEntity(LogMixin, RestoreEntity, Entity):
     def name(self) -> str | UndefinedType | None:
         """Return the name of the entity."""
         meta = self.entity_data.entity.info_object
+        if meta.primary:
+            self._attr_name = None
+            return super().name
+
         original_name = super().name
 
         if original_name not in (UNDEFINED, None) or meta.fallback_name is None:
diff --git a/homeassistant/components/zha/manifest.json b/homeassistant/components/zha/manifest.json
index 25e4de77a32..0cc2524469e 100644
--- a/homeassistant/components/zha/manifest.json
+++ b/homeassistant/components/zha/manifest.json
@@ -21,7 +21,7 @@
     "zha",
     "universal_silabs_flasher"
   ],
-  "requirements": ["zha==0.0.50"],
+  "requirements": ["zha==0.0.51"],
   "usb": [
     {
       "vid": "10C4",
diff --git a/requirements_all.txt b/requirements_all.txt
index dcda559d7d3..1a7c37a6cd3 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -3149,7 +3149,7 @@ zeroconf==0.145.1
 zeversolar==0.3.2
 
 # homeassistant.components.zha
-zha==0.0.50
+zha==0.0.51
 
 # homeassistant.components.zhong_hong
 zhong-hong-hvac==1.0.13
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 5ed82bd81b0..dea6769aa39 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -2538,7 +2538,7 @@ zeroconf==0.145.1
 zeversolar==0.3.2
 
 # homeassistant.components.zha
-zha==0.0.50
+zha==0.0.51
 
 # homeassistant.components.zwave_js
 zwave-js-server-python==0.60.1
diff --git a/tests/components/zha/snapshots/test_diagnostics.ambr b/tests/components/zha/snapshots/test_diagnostics.ambr
index 7a599b00a21..ba8aa9ea245 100644
--- a/tests/components/zha/snapshots/test_diagnostics.ambr
+++ b/tests/components/zha/snapshots/test_diagnostics.ambr
@@ -179,16 +179,7 @@
               }),
               '0x0010': dict({
                 'attribute': "ZCLAttributeDef(id=0x0010, name='cie_addr', type=<class 'zigpy.types.named.EUI64'>, zcl_type=<DataTypeId.EUI64: 240>, access=<ZCLAttributeAccess.Read|Write: 3>, mandatory=True, is_manufacturer_specific=False)",
-                'value': list([
-                  50,
-                  79,
-                  50,
-                  2,
-                  0,
-                  141,
-                  21,
-                  0,
-                ]),
+                'value': None,
               }),
               '0x0011': dict({
                 'attribute': "ZCLAttributeDef(id=0x0011, name='zone_id', type=<class 'zigpy.types.basic.uint8_t'>, zcl_type=<DataTypeId.uint8: 32>, access=<ZCLAttributeAccess.Read: 1>, mandatory=True, is_manufacturer_specific=False)",
diff --git a/tests/components/zha/test_sensor.py b/tests/components/zha/test_sensor.py
index 2d69cf1ff36..88fb9974c1b 100644
--- a/tests/components/zha/test_sensor.py
+++ b/tests/components/zha/test_sensor.py
@@ -30,6 +30,7 @@ from homeassistant.core import HomeAssistant
 from .common import send_attributes_report
 from .conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_PROFILE, SIG_EP_TYPE
 
+ENTITY_ID_NO_PREFIX = "sensor.fakemanufacturer_fakemodel"
 ENTITY_ID_PREFIX = "sensor.fakemanufacturer_fakemodel_{}"
 
 
@@ -335,7 +336,7 @@ async def async_test_pi_heating_demand(
             "humidity",
             async_test_humidity,
             1,
-            None,
+            {},
             None,
             STATE_UNKNOWN,
         ),
@@ -344,7 +345,7 @@ async def async_test_pi_heating_demand(
             "temperature",
             async_test_temperature,
             1,
-            None,
+            {},
             None,
             STATE_UNKNOWN,
         ),
@@ -353,7 +354,7 @@ async def async_test_pi_heating_demand(
             "pressure",
             async_test_pressure,
             1,
-            None,
+            {},
             None,
             STATE_UNKNOWN,
         ),
@@ -362,7 +363,7 @@ async def async_test_pi_heating_demand(
             "illuminance",
             async_test_illuminance,
             1,
-            None,
+            {},
             None,
             STATE_UNKNOWN,
         ),
@@ -492,7 +493,7 @@ async def async_test_pi_heating_demand(
             "device_temperature",
             async_test_device_temperature,
             1,
-            None,
+            {},
             None,
             STATE_UNKNOWN,
         ),
@@ -501,7 +502,7 @@ async def async_test_pi_heating_demand(
             "setpoint_change_source",
             async_test_setpoint_change_source,
             10,
-            None,
+            {},
             None,
             STATE_UNKNOWN,
         ),
@@ -510,7 +511,7 @@ async def async_test_pi_heating_demand(
             "pi_heating_demand",
             async_test_pi_heating_demand,
             10,
-            None,
+            {},
             None,
             STATE_UNKNOWN,
         ),
@@ -558,7 +559,6 @@ async def test_sensor(
     gateway.get_or_create_device(zigpy_device)
     await gateway.async_device_initialized(zigpy_device)
     await hass.async_block_till_done(wait_background_tasks=True)
-    entity_id = ENTITY_ID_PREFIX.format(entity_suffix)
 
     zigpy_device = zigpy_device_mock(
         {
@@ -570,6 +570,11 @@ async def test_sensor(
         }
     )
 
+    if hass.states.get(ENTITY_ID_NO_PREFIX):
+        entity_id = ENTITY_ID_NO_PREFIX
+    else:
+        entity_id = ENTITY_ID_PREFIX.format(entity_suffix)
+
     assert hass.states.get(entity_id).state == initial_sensor_state
 
     # test sensor associated logic
diff --git a/tests/components/zha/test_websocket_api.py b/tests/components/zha/test_websocket_api.py
index f6afee9eb83..ae1ea90d1f9 100644
--- a/tests/components/zha/test_websocket_api.py
+++ b/tests/components/zha/test_websocket_api.py
@@ -420,8 +420,11 @@ async def test_list_groupable_devices(
             assert entity_reference[ATTR_NAME] is not None
             assert entity_reference["entity_id"] is not None
 
-        for entity_reference in endpoint["entities"]:
-            assert entity_reference["original_name"] is not None
+        if len(endpoint["entities"]) == 1:
+            assert endpoint["entities"][0]["original_name"] is None
+        else:
+            for entity_reference in endpoint["entities"]:
+                assert entity_reference["original_name"] is not None
 
     # Make sure there are no groupable devices when the device is unavailable
     # Make device unavailable
-- 
GitLab