80 lines
2.4 KiB
Python
80 lines
2.4 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
import pytest
|
|
|
|
from artemis.clients.ui_automator_client import UIAutomatorClient
|
|
from artemis.drivers.android.adb_driver import AndroidAdbDriver
|
|
|
|
|
|
@patch("artemis.clients.ui_automator_client._ManagedUIAutomatorDevice")
|
|
@patch(
|
|
"artemis.clients.ui_automator_client.ensure_device_awake",
|
|
return_value="host_heartbeat",
|
|
)
|
|
@patch("artemis.clients.ui_automator_client._ensure_maestro_not_installed")
|
|
def test_new_ui_connection_enrolls_device_in_shared_awake_strategy(
|
|
mock_remove_maestro, mock_ensure_awake, mock_connect
|
|
):
|
|
client = UIAutomatorClient("device-123")
|
|
|
|
client.connect()
|
|
client.connect()
|
|
|
|
mock_remove_maestro.assert_called_once_with("device-123")
|
|
mock_ensure_awake.assert_called_once_with("device-123")
|
|
mock_connect.assert_called_once_with("device-123")
|
|
|
|
|
|
@patch(
|
|
"artemis.clients.ui_automator_client._ManagedUIAutomatorDevice",
|
|
side_effect=RuntimeError("offline"),
|
|
)
|
|
@patch(
|
|
"artemis.clients.ui_automator_client.ensure_device_awake",
|
|
return_value="host_heartbeat",
|
|
)
|
|
@patch("artemis.clients.ui_automator_client._ensure_maestro_not_installed")
|
|
def test_failed_ui_connection_does_not_stop_process_awake_service(
|
|
_mock_remove_maestro, mock_ensure_awake, _mock_connect
|
|
):
|
|
client = UIAutomatorClient("device-123")
|
|
|
|
with pytest.raises(RuntimeError, match="offline"):
|
|
client.connect()
|
|
|
|
mock_ensure_awake.assert_called_once_with("device-123")
|
|
assert client._awake_strategy is None
|
|
|
|
|
|
@patch("artemis.clients.ui_automator_client._ManagedUIAutomatorDevice")
|
|
@patch(
|
|
"artemis.clients.ui_automator_client.ensure_device_awake",
|
|
return_value="host_heartbeat",
|
|
)
|
|
@patch("artemis.clients.ui_automator_client._ensure_maestro_not_installed")
|
|
def test_client_disconnect_does_not_send_power_cleanup_commands(
|
|
_mock_remove_maestro, mock_ensure_awake, _mock_connect
|
|
):
|
|
client = UIAutomatorClient("device-123")
|
|
client.connect()
|
|
|
|
client.disconnect()
|
|
|
|
mock_ensure_awake.assert_called_once_with("device-123")
|
|
assert client._device is None
|
|
assert client._awake_strategy is None
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_android_driver_disconnect_cleans_up_ui_client():
|
|
ui_client = MagicMock()
|
|
driver = AndroidAdbDriver(
|
|
device_id="device-123",
|
|
adb_client=MagicMock(),
|
|
ui_adb_client=ui_client,
|
|
)
|
|
|
|
await driver.disconnect()
|
|
|
|
ui_client.disconnect.assert_called_once_with()
|