fix: Wi-Fi 恢复失败后继续搜索设备 (#66)

This commit is contained in:
chengma
2026-08-09 22:18:55 +08:00
parent 8643c37211
commit ff8cdd77c3
4 changed files with 97 additions and 19 deletions
+49 -12
View File
@@ -556,13 +556,14 @@ class SettingsPageEventTest(unittest.TestCase):
page.eventBinder.shutdown()
page.deleteLater()
def test_manual_wifi_reconnect_failure_keeps_saved_device(self):
def test_manual_wifi_reconnect_failure_still_lists_usb_device(self):
wifi_serial = "192.168.0.173:5555"
self.repository.set(SELECTED_ANDROID_SERIAL_KEY, wifi_serial)
service = SequenceAndroidDeviceService(
[
[AndroidDevice(wifi_serial, "Wi-Fi", "Phone", "14")],
AndroidDeviceSearchError("目标设备拒绝连接"),
[AndroidDevice("USB-001", "USB", "Pixel 8", "14")],
]
)
page = SettingsPage(
@@ -574,16 +575,20 @@ class SettingsPageEventTest(unittest.TestCase):
self._wait_until(lambda: page.eventBinder._search_thread is None)
page.searchButton.click()
self._wait_until(lambda: service.call_count == 2)
self._wait_until(lambda: service.call_count == 3)
self._wait_until(lambda: page.eventBinder._search_thread is None)
self.assertEqual(
self.repository.get(SELECTED_ANDROID_SERIAL_KEY),
wifi_serial,
)
self.assertEqual(page.deviceTableModel.checked_serial, wifi_serial)
self.assertIn("无法重新连接", page.deviceStatusLabel.text())
self.assertIn("已保存配置未更改", page.deviceStatusLabel.text())
self.assertIsNotNone(
page.deviceTableModel.device_for_serial("USB-001")
)
self.assertEqual(page.deviceTableModel.checked_serial, "")
self.assertIn("找到 1 台 Android 设备", page.deviceStatusLabel.text())
self.assertIn("恢复失败", page.deviceStatusLabel.text())
self.assertIn("配置已保留", page.deviceStatusLabel.text())
page.eventBinder.shutdown()
page.deleteLater()
@@ -591,9 +596,38 @@ class SettingsPageEventTest(unittest.TestCase):
wifi_serial = "192.168.0.173:5555"
self.repository.set(SELECTED_ANDROID_SERIAL_KEY, wifi_serial)
service = SequenceAndroidDeviceService(
[AndroidDeviceSearchError("目标设备拒绝连接")]
[AndroidDeviceSearchError("目标设备拒绝连接"), []]
)
page = SettingsPage(
settings_repository=self.repository,
admin_gateway=MockAdminGateway(),
android_device_service=service,
)
self._wait_until(lambda: service.call_count == 2)
self._wait_until(lambda: page.eventBinder._search_thread is None)
self.assertEqual(
self.repository.get(SELECTED_ANDROID_SERIAL_KEY),
wifi_serial,
)
self.assertIn("自动恢复未完成", page.deviceStatusLabel.text())
self.assertIn("未找到其他 Android 设备", page.deviceStatusLabel.text())
self.assertIn("配置已保留", page.deviceStatusLabel.text())
self.assertTrue(page.searchButton.isEnabled())
page.eventBinder.shutdown()
page.deleteLater()
def test_search_failure_after_restore_failure_preserves_previous_rows(self):
wifi_serial = "192.168.0.173:5555"
self.repository.set(SELECTED_ANDROID_SERIAL_KEY, wifi_serial)
service = SequenceAndroidDeviceService(
[
[AndroidDevice(wifi_serial, "Wi-Fi", "Phone", "14")],
AndroidDeviceSearchError("目标设备拒绝连接"),
AndroidDeviceSearchError("adb devices 执行失败"),
]
)
page = SettingsPage(
settings_repository=self.repository,
admin_gateway=MockAdminGateway(),
@@ -602,13 +636,16 @@ class SettingsPageEventTest(unittest.TestCase):
self._wait_until(lambda: service.call_count == 1)
self._wait_until(lambda: page.eventBinder._search_thread is None)
self.assertEqual(
self.repository.get(SELECTED_ANDROID_SERIAL_KEY),
wifi_serial,
page.searchButton.click()
self._wait_until(lambda: service.call_count == 3)
self._wait_until(lambda: page.eventBinder._search_thread is None)
self.assertIsNotNone(
page.deviceTableModel.device_for_serial(wifi_serial)
)
self.assertIn("自动恢复失败", page.deviceStatusLabel.text())
self.assertIn("可点击搜索重试", page.deviceStatusLabel.text())
self.assertTrue(page.searchButton.isEnabled())
self.assertEqual(page.deviceTableModel.checked_serial, wifi_serial)
self.assertIn("搜索失败", page.deviceStatusLabel.text())
self.assertIn("adb devices 执行失败", page.deviceStatusLabel.text())
page.eventBinder.shutdown()
page.deleteLater()