Files
2026-07-05 16:39:15 -05:00

40 lines
1.1 KiB
Python

"""Gateway click sequencing against a fake tinytuya device."""
import pytest
from tuya_re import gateway
class FakeDevice:
def __init__(self, results=None):
self.calls = []
self._results = dict(results or {})
def set_value(self, dp, value):
self.calls.append((dp, value))
return self._results.get(dp, {"dps": {dp: value}})
def test_click_sets_mode_then_presses_with_settle():
dev = FakeDevice()
sleeps = []
gateway.click(dev, settle=1.0, sleep=sleeps.append)
assert dev.calls == [
(gateway.DP_MODE, gateway.MODE_CLICK),
(gateway.DP_SWITCH, True),
]
assert sleeps == [1.0]
def test_click_raises_on_mode_error():
dev = FakeDevice(results={gateway.DP_MODE: {"Error": "914"}})
with pytest.raises(gateway.GatewayError, match="set click mode"):
gateway.click(dev, sleep=lambda _: None)
assert dev.calls == [(gateway.DP_MODE, gateway.MODE_CLICK)]
def test_click_raises_on_press_error():
dev = FakeDevice(results={gateway.DP_SWITCH: {"Error": "905"}})
with pytest.raises(gateway.GatewayError, match="click"):
gateway.click(dev, sleep=lambda _: None)