feat: complete T-105b account login reuse

This commit is contained in:
chengma
2026-07-06 15:01:50 +08:00
parent 7ac0dcd00e
commit 0dad4151ef
12 changed files with 276 additions and 30 deletions
+43 -5
View File
@@ -4284,12 +4284,14 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.addCleanup(tab.close)
tab.table.selectRow(0)
class FakeProcess:
pid = 1234
with mock.patch(
"app.gui.accounts.launch_for_login",
return_value=FakeProcess(),
return_value={
"action": "launched",
"pid": 1234,
"target_id": "target-new",
"url": "https://seller.shopee.tw/portal/",
},
) as launch_for_login:
tab.launch_login()
@@ -4302,8 +4304,44 @@ class GuiTests(TempDirMixin, unittest.TestCase):
events = db.list_run_log_events(run_log.id, path=cfg["db_path"])
messages = "\n".join(event.message for event in events)
self.assertIn("step=launch_chrome result=start", messages)
self.assertIn("step=launch_chrome result=success", messages)
self.assertIn("step=launch_chrome result=launched", messages)
self.assertIn("pid=1234", messages)
self.assertIn("target_id=target-new", messages)
self.assert_removed(temp_dir)
def test_accounts_tab_launch_login_reuse_writes_chrome_launch_run_log(self):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)
account = accounts.create_account("主店", "alias-a", debug_port=9222, config=cfg)
statuses = []
tab = AccountsTab(config=cfg, status_callback=statuses.append)
self.addCleanup(tab.close)
tab.table.selectRow(0)
with mock.patch(
"app.gui.accounts.launch_for_login",
return_value={
"action": "reused",
"pid": None,
"target_id": "target-existing",
"url": "https://seller.shopee.tw/portal/",
},
) as launch_for_login:
tab.launch_login()
launch_for_login.assert_called_once_with(account, config=cfg)
self.assertEqual("已启动", tab.login_statuses["alias-a"])
self.assertIn("已复用现有窗口", statuses[-1])
run_log = db.list_run_logs(limit=1, run_type="chrome_launch", path=cfg["db_path"])[0]
self.assertEqual("done", run_log.status)
self.assertEqual(1, run_log.success_count)
events = db.list_run_log_events(run_log.id, path=cfg["db_path"])
messages = "\n".join(event.message for event in events)
self.assertIn("step=launch_chrome result=start", messages)
self.assertIn("step=launch_chrome result=reused", messages)
self.assertIn("target_id=target-existing", messages)
self.assertIn("url=https://seller.shopee.tw/portal/", messages)
self.assert_removed(temp_dir)
if __name__ == "__main__":