Implement Apex Agent MVP scaffold
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from core.device_manager import DeviceManager
|
||||
from core.errors import DeviceOfflineError
|
||||
from tests.fakes import FakeDriver
|
||||
|
||||
|
||||
def test_device_manager_connect_disconnect_transitions() -> None:
|
||||
driver = FakeDriver()
|
||||
manager = DeviceManager()
|
||||
manager.register_device("iphone-1", lambda: driver, connection_info={"wda_port": 8100})
|
||||
|
||||
assert manager.list_devices()[0].status == "idle"
|
||||
assert manager.connect("iphone-1", max_retries=1) is driver
|
||||
assert manager.status("iphone-1") == "busy"
|
||||
|
||||
manager.disconnect("iphone-1")
|
||||
assert manager.status("iphone-1") == "idle"
|
||||
assert driver.calls[0] == ("connect", ())
|
||||
assert driver.calls[-1] == ("disconnect", ())
|
||||
|
||||
|
||||
def test_device_manager_marks_unreachable_device_offline() -> None:
|
||||
manager = DeviceManager()
|
||||
manager.register_device("iphone-1", lambda: FakeDriver(fail_connect=True))
|
||||
|
||||
with pytest.raises(DeviceOfflineError):
|
||||
manager.connect("iphone-1", max_retries=2, retry_backoff_seconds=0)
|
||||
|
||||
assert manager.status("iphone-1") == "offline"
|
||||
|
||||
Reference in New Issue
Block a user