"""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)