mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-25 04:33:33 +00:00
eff8db450d
In order to support the ks240 which has children for the fan and light components, this PR adds those modules at the parent level and hides the children so it looks like a single device to consumers. It also decides which modules not to take from the child because the child does not support them even though it say it does. It does this for now via a fixed list, e.g. `Time`, `Firmware` etc. Also adds fixtures from two versions and corresponding tests.
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
import pytest
|
|
|
|
from kasa.iot import IotDevice
|
|
from kasa.smart import SmartDevice
|
|
from kasa.tests.conftest import dimmable, parametrize
|
|
|
|
brightness = parametrize("brightness smart", component_filter="brightness")
|
|
|
|
|
|
@brightness
|
|
async def test_brightness_component(dev: SmartDevice):
|
|
"""Test brightness feature."""
|
|
brightness = dev.modules.get("Brightness")
|
|
assert brightness
|
|
assert isinstance(dev, SmartDevice)
|
|
assert "brightness" in dev._components
|
|
|
|
# Test getting the value
|
|
feature = brightness._module_features["brightness"]
|
|
assert isinstance(feature.value, int)
|
|
assert feature.value > 1 and feature.value <= 100
|
|
|
|
# Test setting the value
|
|
await feature.set_value(10)
|
|
await dev.update()
|
|
assert feature.value == 10
|
|
|
|
with pytest.raises(ValueError):
|
|
await feature.set_value(feature.minimum_value - 10)
|
|
|
|
with pytest.raises(ValueError):
|
|
await feature.set_value(feature.maximum_value + 10)
|
|
|
|
|
|
@dimmable
|
|
async def test_brightness_dimmable(dev: SmartDevice):
|
|
"""Test brightness feature."""
|
|
assert isinstance(dev, IotDevice)
|
|
assert "brightness" in dev.sys_info or bool(dev.sys_info["is_dimmable"])
|
|
|
|
# Test getting the value
|
|
feature = dev.features["brightness"]
|
|
assert isinstance(feature.value, int)
|
|
assert feature.value > 0 and feature.value <= 100
|
|
|
|
# Test setting the value
|
|
await feature.set_value(10)
|
|
await dev.update()
|
|
assert feature.value == 10
|
|
|
|
with pytest.raises(ValueError):
|
|
await feature.set_value(feature.minimum_value - 10)
|
|
|
|
with pytest.raises(ValueError):
|
|
await feature.set_value(feature.maximum_value + 10)
|