mirror of
https://github.com/python-kasa/python-kasa.git
synced 2026-07-08 14:52:03 +00:00
Some checks are pending
CI / Perform Lint Checks (3.14) (push) Waiting to run
CI / Python 3.11 on macos-latest (push) Blocked by required conditions
CI / Python 3.12 on macos-latest (push) Blocked by required conditions
CI / Python 3.13 on macos-latest (push) Blocked by required conditions
CI / Python 3.14 on macos-latest (push) Blocked by required conditions
CI / Python 3.11 on ubuntu-latest (push) Blocked by required conditions
CI / Python 3.12 on ubuntu-latest (push) Blocked by required conditions
CI / Python 3.13 on ubuntu-latest (push) Blocked by required conditions
CI / Python 3.14 on ubuntu-latest (push) Blocked by required conditions
CI / Python 3.11 on windows-latest (push) Blocked by required conditions
CI / Python 3.12 on windows-latest (push) Blocked by required conditions
CI / Python 3.13 on windows-latest (push) Blocked by required conditions
CI / Python 3.14 on windows-latest (push) Blocked by required conditions
CodeQL Checks / Analyze (python) (push) Waiting to run
Add type annotations across all 'smart' tests, enabling mypy to check test function bodies, catching type errors that were previously hidden.
69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
import pytest
|
|
from pytest_mock import MockerFixture
|
|
|
|
from kasa import Device, Feature, Module
|
|
|
|
from ...device_fixtures import parametrize
|
|
|
|
childsetup = parametrize(
|
|
"supports pairing", component_filter="child_quick_setup", protocol_filter={"SMART"}
|
|
)
|
|
|
|
|
|
@childsetup
|
|
async def test_childsetup_features(dev: Device) -> None:
|
|
"""Test the exposed features."""
|
|
cs = dev.modules.get(Module.ChildSetup)
|
|
assert cs
|
|
|
|
assert "pair" in cs._module_features
|
|
pair = cs._module_features["pair"]
|
|
assert pair.type == Feature.Type.Action
|
|
|
|
|
|
@childsetup
|
|
async def test_childsetup_pair(
|
|
dev: Device, mocker: MockerFixture, caplog: pytest.LogCaptureFixture
|
|
) -> None:
|
|
"""Test device pairing."""
|
|
caplog.set_level(logging.INFO)
|
|
mock_query_helper = mocker.spy(dev, "_query_helper")
|
|
mocker.patch("asyncio.sleep")
|
|
|
|
cs = dev.modules.get(Module.ChildSetup)
|
|
assert cs
|
|
|
|
await cs.pair()
|
|
|
|
mock_query_helper.assert_has_awaits(
|
|
[
|
|
mocker.call("begin_scanning_child_device", None),
|
|
mocker.call("get_scan_child_device_list", params=mocker.ANY),
|
|
mocker.call("add_child_device_list", params=mocker.ANY),
|
|
]
|
|
)
|
|
assert "Discovery done" in caplog.text
|
|
|
|
|
|
@childsetup
|
|
async def test_childsetup_unpair(
|
|
dev: Device, mocker: MockerFixture, caplog: pytest.LogCaptureFixture
|
|
) -> None:
|
|
"""Test unpair."""
|
|
mock_query_helper = mocker.spy(dev, "_query_helper")
|
|
DUMMY_ID = "dummy_id"
|
|
|
|
cs = dev.modules.get(Module.ChildSetup)
|
|
assert cs
|
|
|
|
await cs.unpair(DUMMY_ID)
|
|
|
|
mock_query_helper.assert_awaited_with(
|
|
"remove_child_device_list",
|
|
params={"child_device_list": [{"device_id": DUMMY_ID}]},
|
|
)
|