Files
ha-deconz-bridge/tests/test_validation.py
T
2026-05-30 15:44:40 +00:00

50 lines
1.6 KiB
Python

from __future__ import annotations
import pytest
from ha_deconz_bridge.backends.deconz import DeconzBackend
from ha_deconz_bridge.color import Color
from ha_deconz_bridge.lights import ChannelSpec, ControllerModeSpec, ControllerSpec, VirtualLightSpec
def test_virtual_light_rejects_color_temp_without_native_ct_emitters() -> None:
with pytest.raises(ValueError):
VirtualLightSpec(
name="bad",
supported_color_modes=("color_temp",),
controllers={
"1": ControllerSpec(
zigbee_id="1",
name="RGB only",
modes={
"rgb": ControllerModeSpec(
name="rgb",
channels={
"r": ChannelSpec("r", Color.from_rgb((1.0, 0.0, 0.0))),
"g": ChannelSpec("g", Color.from_rgb((0.0, 1.0, 0.0))),
"b": ChannelSpec("b", Color.from_rgb((0.0, 0.0, 1.0))),
},
)
},
)
},
)
def test_controller_mode_rejects_invalid_role() -> None:
with pytest.raises(ValueError):
ControllerModeSpec(
name="rgb",
channels={"ww": ChannelSpec("ww", Color.from_rgb((1.0, 1.0, 1.0)))},
)
def test_deconz_invalid_ct_range_is_rejected() -> None:
resource = {
"state": {"on": True, "reachable": True, "bri": 254, "ct": 400, "colormode": "ct"},
"ctmin": 65279,
"ctmax": 0,
}
assert DeconzBackend.extract_mireds(resource) is None