|
2 | 2 |
|
3 | 3 | import pytest
|
4 | 4 | from zigpy.zcl import foundation
|
5 |
| -from zigpy.zcl.clusters.general import Basic |
| 5 | +from zigpy.zcl.clusters.general import Basic, PowerConfiguration |
| 6 | +from zigpy.zcl.clusters.measurement import RelativeHumidity, TemperatureMeasurement |
6 | 7 |
|
7 | 8 | import zhaquirks
|
8 |
| -import zhaquirks.tuya |
| 9 | +from zhaquirks.tuya import TuyaLocalCluster |
9 | 10 | from zhaquirks.tuya.mcu import TuyaMCUCluster
|
10 | 11 |
|
11 | 12 | zhaquirks.setup()
|
@@ -115,3 +116,26 @@ async def test_handle_get_data_enum_batt(
|
115 | 116 |
|
116 | 117 | status = ep.tuya_manufacturer.handle_get_data(data.data)
|
117 | 118 | assert status == foundation.Status.UNSUPPORTED_ATTRIBUTE
|
| 119 | + |
| 120 | + |
| 121 | +def test_valid_attributes(zigpy_device_from_v2_quirk): |
| 122 | + """Test that valid attributes on virtual clusters are populated by Tuya datapoints mappings.""" |
| 123 | + quirked = zigpy_device_from_v2_quirk("_TZE200_bjawzodf", "TS0601") |
| 124 | + ep = quirked.endpoints[1] |
| 125 | + |
| 126 | + temperature_attr_id = TemperatureMeasurement.AttributeDefs.measured_value.id |
| 127 | + humidity_attr_id = RelativeHumidity.AttributeDefs.measured_value.id |
| 128 | + power_attr_id = PowerConfiguration.AttributeDefs.battery_percentage_remaining.id |
| 129 | + |
| 130 | + temperature_cluster = ep.temperature |
| 131 | + humidity_cluster = ep.humidity |
| 132 | + power_config_cluster = ep.power |
| 133 | + |
| 134 | + assert isinstance(temperature_cluster, TuyaLocalCluster) |
| 135 | + assert isinstance(humidity_cluster, TuyaLocalCluster) |
| 136 | + assert isinstance(power_config_cluster, TuyaLocalCluster) |
| 137 | + |
| 138 | + # check that the virtual clusters have expected valid attributes |
| 139 | + assert {temperature_attr_id} == temperature_cluster._VALID_ATTRIBUTES |
| 140 | + assert {humidity_attr_id} == humidity_cluster._VALID_ATTRIBUTES |
| 141 | + assert {power_attr_id} == power_config_cluster._VALID_ATTRIBUTES |
0 commit comments