Private
Public Access
40 lines
1.1 KiB
Python
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)
|