Skip to content

Commit 130d75c

Browse files
authored
Expose supported_features as a property (#69)
* Expose `supported_features` as a property * Fix import in `test_siren` * Add `supported_features` to `Cover` as well * Unit test shade cover features
1 parent 0f944b9 commit 130d75c

File tree

4 files changed

+35
-2
lines changed

4 files changed

+35
-2
lines changed

tests/test_cover.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,16 @@ async def test_cover(
205205
)
206206

207207
entity = get_entity(zha_device, platform=Platform.COVER)
208+
assert entity.supported_features == (
209+
CoverEntityFeature.OPEN
210+
| CoverEntityFeature.CLOSE
211+
| CoverEntityFeature.SET_POSITION
212+
| CoverEntityFeature.STOP
213+
| CoverEntityFeature.OPEN_TILT
214+
| CoverEntityFeature.CLOSE_TILT
215+
| CoverEntityFeature.STOP_TILT
216+
| CoverEntityFeature.SET_TILT_POSITION
217+
)
208218

209219
# test that the state has changed from unavailable to off
210220
await send_attributes_report(
@@ -561,7 +571,7 @@ async def test_shade(
561571
cluster_level = zigpy_shade_device.endpoints.get(1).level
562572
entity = get_entity(zha_device, platform=Platform.COVER)
563573

564-
assert entity._attr_supported_features == (
574+
assert entity.supported_features == (
565575
CoverEntityFeature.OPEN
566576
| CoverEntityFeature.CLOSE
567577
| CoverEntityFeature.STOP
@@ -719,7 +729,7 @@ async def test_keen_vent(
719729
cluster_level = zigpy_keen_vent.endpoints.get(1).level
720730
entity = get_entity(zha_device, platform=Platform.COVER)
721731

722-
assert entity._attr_supported_features == (
732+
assert entity.supported_features == (
723733
CoverEntityFeature.OPEN
724734
| CoverEntityFeature.CLOSE
725735
| CoverEntityFeature.STOP

tests/test_siren.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from tests.conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_TYPE
1616
from zha.application import Platform
1717
from zha.application.gateway import Gateway
18+
from zha.application.platforms.siren import SirenEntityFeature
1819
from zha.zigbee.device import Device
1920

2021

@@ -50,6 +51,13 @@ async def test_siren(
5051
assert cluster is not None
5152

5253
entity = get_entity(zha_device, platform=Platform.SIREN)
54+
assert entity.supported_features == (
55+
SirenEntityFeature.TURN_ON
56+
| SirenEntityFeature.TURN_OFF
57+
| SirenEntityFeature.TONES
58+
| SirenEntityFeature.VOLUME_SET
59+
| SirenEntityFeature.DURATION
60+
)
5361

5462
assert entity.state["state"] is False
5563

zha/application/platforms/cover/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ def __init__(
9595
self.handle_cluster_handler_attribute_updated,
9696
)
9797

98+
@property
99+
def supported_features(self) -> CoverEntityFeature:
100+
"""Return supported features."""
101+
return self._attr_supported_features
102+
98103
@property
99104
def state(self) -> dict[str, Any]:
100105
"""Get the state of the cover."""
@@ -422,6 +427,11 @@ def state(self) -> dict[str, Any]:
422427
)
423428
return response
424429

430+
@property
431+
def supported_features(self) -> CoverEntityFeature:
432+
"""Return supported features."""
433+
return self._attr_supported_features
434+
425435
@property
426436
def current_cover_position(self) -> int | None:
427437
"""Return current position of cover.

zha/application/platforms/siren.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ def state(self) -> dict[str, Any]:
116116
response["state"] = self.is_on
117117
return response
118118

119+
@property
120+
def supported_features(self) -> SirenEntityFeature:
121+
"""Return supported features."""
122+
return self._attr_supported_features
123+
119124
@property
120125
def is_on(self) -> bool:
121126
"""Return true if the entity is on."""

0 commit comments

Comments
 (0)