mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-12-21 12:10:25 +00:00
Update connect_single to allow passing in the device type
This commit is contained in:
@@ -4,7 +4,18 @@ import sys
|
||||
|
||||
import pytest # type: ignore # https://github.com/pytest-dev/pytest/issues/3342
|
||||
|
||||
from kasa import DeviceType, Discover, SmartDevice, SmartDeviceException, protocol
|
||||
from kasa import (
|
||||
DeviceType,
|
||||
Discover,
|
||||
SmartBulb,
|
||||
SmartDevice,
|
||||
SmartDeviceException,
|
||||
SmartDimmer,
|
||||
SmartLightStrip,
|
||||
SmartPlug,
|
||||
SmartStrip,
|
||||
protocol,
|
||||
)
|
||||
from kasa.discover import _DiscoverProtocol, json_dumps
|
||||
from kasa.exceptions import UnsupportedDeviceException
|
||||
|
||||
@@ -85,6 +96,33 @@ async def test_connect_single(discovery_data: dict, mocker, custom_port):
|
||||
assert dev.port == custom_port or dev.port == 9999
|
||||
|
||||
|
||||
@pytest.mark.parametrize("custom_port", [123, None])
|
||||
@pytest.mark.parametrize(
|
||||
("device_type", "klass"),
|
||||
(
|
||||
(DeviceType.Plug, SmartPlug),
|
||||
(DeviceType.Bulb, SmartBulb),
|
||||
(DeviceType.Dimmer, SmartDimmer),
|
||||
(DeviceType.LightStrip, SmartLightStrip),
|
||||
(DeviceType.Unknown, SmartDevice),
|
||||
),
|
||||
)
|
||||
async def test_connect_single_passed_device_type(
|
||||
discovery_data: dict,
|
||||
mocker,
|
||||
device_type: DeviceType,
|
||||
klass: type[SmartDevice],
|
||||
custom_port,
|
||||
):
|
||||
"""Make sure that connect_single with a passed device type."""
|
||||
host = "127.0.0.1"
|
||||
mocker.patch("kasa.TPLinkSmartHomeProtocol.query", return_value=discovery_data)
|
||||
|
||||
dev = await Discover.connect_single(host, port=custom_port, device_type=device_type)
|
||||
assert isinstance(dev, klass)
|
||||
assert dev.port == custom_port or dev.port == 9999
|
||||
|
||||
|
||||
async def test_connect_single_query_fails(discovery_data: dict, mocker):
|
||||
"""Make sure that connect_single fails when query fails."""
|
||||
host = "127.0.0.1"
|
||||
|
||||
Reference in New Issue
Block a user