"""当前使用 Android 设备设置服务测试。""" import tempfile import unittest from pathlib import Path from src.selected_android_device_service import ( SELECTED_ANDROID_SERIAL_KEY, SelectedAndroidDeviceService, ) from src.settings_repository import SettingsRepository class SelectedAndroidDeviceServiceTest(unittest.TestCase): def setUp(self): self.temp_directory = tempfile.TemporaryDirectory() db_path = Path(self.temp_directory.name) / "client.db" self.repository = SettingsRepository(db_path) self.service = SelectedAndroidDeviceService(self.repository) def tearDown(self): self.temp_directory.cleanup() def test_missing_setting_loads_as_empty(self): self.assertEqual(self.service.load(), "") def test_save_normalizes_and_persists_serial(self): serial = self.service.save(" 192.168.0.173:5555 ") self.assertEqual(serial, "192.168.0.173:5555") self.assertEqual( self.repository.get(SELECTED_ANDROID_SERIAL_KEY), serial ) def test_invalid_serial_is_rejected(self): for serial in ("", "USB 001", None): with self.subTest(serial=serial): with self.assertRaises(ValueError): self.service.save(serial) def test_corrupted_setting_loads_as_empty(self): self.repository.set(SELECTED_ANDROID_SERIAL_KEY, {"serial": "bad"}) self.assertEqual(self.service.load(), "") def test_delete_removes_only_selected_serial(self): self.repository.set("android.pdd_package", "com.xunmeng.pinduoduo") self.service.save("USB-001") self.assertTrue(self.service.delete()) self.assertIsNone(self.repository.get(SELECTED_ANDROID_SERIAL_KEY)) self.assertEqual( self.repository.get("android.pdd_package"), "com.xunmeng.pinduoduo", ) if __name__ == "__main__": unittest.main()