import pytest

from kasa import Device, Module

from ...device_fixtures import parametrize

motion = parametrize(
    "is motion sensor", model_filter="T100", protocol_filter={"SMART.CHILD"}
)


@motion
@pytest.mark.parametrize(
    ("feature", "type"),
    [
        ("motion_detected", bool),
    ],
)
async def test_motion_features(dev: Device, feature, type):
    """Test that features are registered and work as expected."""
    motion = dev.modules.get(Module.MotionSensor)
    assert motion is not None

    prop = getattr(motion, feature)
    assert isinstance(prop, type)

    feat = dev.features[feature]
    assert feat.value == prop
    assert isinstance(feat.value, type)