Add Time module to SmartCamera devices (#1182)

This commit is contained in:
Steven B.
2024-10-24 19:11:21 +01:00
committed by GitHub
parent 28361c1727
commit e3610cf37e
5 changed files with 140 additions and 9 deletions

View File

@@ -162,6 +162,24 @@ class FakeSmartCameraTransport(BaseTransport):
"lens_mask_info",
"enabled",
],
("system", "clock_status", "seconds_from_1970"): [
"getClockStatus",
"system",
"clock_status",
"seconds_from_1970",
],
("system", "clock_status", "local_time"): [
"getClockStatus",
"system",
"clock_status",
"local_time",
],
("system", "basic", "zone_id"): [
"getTimezone",
"system",
"basic",
"zone_id",
],
}
async def _send_request(self, request_dict: dict):
@@ -188,12 +206,14 @@ class FakeSmartCameraTransport(BaseTransport):
for skey, sval in skey_val.items():
section_key = skey
section_value = sval
if setter_keys := self.SETTERS.get(
(module, section, section_key)
):
self._get_param_set_value(info, setter_keys, section_value)
else:
return {"error_code": -1}
break
if setter_keys := self.SETTERS.get((module, section, section_key)):
self._get_param_set_value(info, setter_keys, section_value)
return {"error_code": 0}
else:
return {"error_code": -1}
return {"error_code": 0}
elif method[:3] == "get":
params = request_dict.get("params")
if method in info:

View File

@@ -2,9 +2,12 @@
from __future__ import annotations
import pytest
from datetime import datetime, timezone
from kasa import Device, DeviceType
import pytest
from freezegun.api import FrozenDateTimeFactory
from kasa import Device, DeviceType, Module
from ..conftest import device_smartcamera, hub_smartcamera
@@ -45,3 +48,14 @@ async def test_hub(dev):
await child.update()
assert "Time" not in child.modules
assert child.time
@device_smartcamera
async def test_device_time(dev: Device, freezer: FrozenDateTimeFactory):
"""Test a child device gets the time from it's parent module."""
fallback_time = datetime.now(timezone.utc).astimezone().replace(microsecond=0)
assert dev.time != fallback_time
module = dev.modules[Module.Time]
await module.set_time(fallback_time)
await dev.update()
assert dev.time == fallback_time