T-578 更新失败关闭新建商品页

This commit is contained in:
chengma
2026-07-09 21:08:42 +08:00
parent 7c606e860e
commit 65a01c35e8
5 changed files with 137 additions and 14 deletions
+104 -1
View File
@@ -780,12 +780,65 @@ class EditorLoginTests(unittest.TestCase):
sleep.assert_called_once_with(2)
close_tab.assert_called_once_with("target-new", host="127.0.0.1:9222")
def test_apply_task_keeps_product_tab_after_failed_update(self):
def test_apply_task_keeps_auto_created_product_tab_after_success_when_disabled(self):
cdp = FakeProductCDP("ws-new")
cdp.target_id = "target-new"
cdp.created_by_app = True
cdp.cdp_host = "127.0.0.1:9222"
with mock.patch("app.editor.open_product", return_value=cdp), mock.patch(
"app.editor.change_title",
return_value={"ok": True, "reason": None},
), mock.patch(
"app.editor.click_update",
return_value={"clicked": True, "reason": None},
), mock.patch("app.editor.close_tab") as close_tab, mock.patch(
"app.editor.time.sleep"
) as sleep:
result = editor.apply_task(
{"debug_port": 9222},
{"item_id": "51100639510", "new_title": "新标题"},
close_success_tab=False,
)
self.assertTrue(result["committed"])
self.assertTrue(cdp.closed)
close_tab.assert_not_called()
sleep.assert_not_called()
def test_apply_task_closes_auto_created_product_tab_after_failed_update(self):
cdp = FakeProductCDP("ws-new")
cdp.target_id = "target-new"
cdp.created_by_app = True
cdp.cdp_host = "127.0.0.1:9222"
with mock.patch("app.editor.open_product", return_value=cdp), mock.patch(
"app.editor.change_title",
return_value={"ok": True, "reason": None},
), mock.patch(
"app.editor.click_update",
return_value={"clicked": False, "reason": "UPDATE_DISABLED"},
), mock.patch("app.editor.close_tab") as close_tab, mock.patch(
"app.editor.time.sleep"
) as sleep:
result = editor.apply_task(
{"debug_port": 9222},
{"item_id": "51100639510", "new_title": "新标题"},
close_success_tab=False,
)
self.assertFalse(result["committed"])
self.assertEqual("UPDATE_DISABLED", result["error"])
self.assertTrue(cdp.closed)
close_tab.assert_called_once_with("target-new", host="127.0.0.1:9222")
sleep.assert_not_called()
def test_apply_task_keeps_reused_product_tab_after_failed_update(self):
cdp = FakeProductCDP("ws-existing")
cdp.target_id = "target-existing"
cdp.created_by_app = False
cdp.cdp_host = "127.0.0.1:9222"
with mock.patch("app.editor.open_product", return_value=cdp), mock.patch(
"app.editor.change_title",
return_value={"ok": True, "reason": None},
@@ -807,6 +860,56 @@ class EditorLoginTests(unittest.TestCase):
close_tab.assert_not_called()
sleep.assert_not_called()
def test_apply_task_closes_auto_created_product_tab_after_cover_failure(self):
cdp = FakeProductCDP("ws-new")
cdp.target_id = "target-new"
cdp.created_by_app = True
cdp.cdp_host = "127.0.0.1:9222"
with mock.patch("app.editor.open_product", return_value=cdp), mock.patch(
"app.editor.replace_cover",
return_value={"ok": False, "reason": "UPLOAD_TIMEOUT"},
), mock.patch("app.editor.click_update") as click_update, mock.patch(
"app.editor.close_tab",
return_value=True,
) as close_tab, mock.patch("app.editor.time.sleep") as sleep:
result = editor.apply_task(
{"debug_port": 9222},
{"item_id": "51100639510", "new_cover_path": "new.jpg"},
close_success_tab=False,
)
self.assertFalse(result["committed"])
self.assertIn("新封面上传超时", result["error"])
click_update.assert_not_called()
self.assertTrue(cdp.closed)
close_tab.assert_called_once_with("target-new", host="127.0.0.1:9222")
sleep.assert_not_called()
def test_apply_task_closes_auto_created_product_tab_after_exception(self):
cdp = FakeProductCDP("ws-new")
cdp.target_id = "target-new"
cdp.created_by_app = True
cdp.cdp_host = "127.0.0.1:9222"
with mock.patch("app.editor.open_product", return_value=cdp), mock.patch(
"app.editor.change_title",
side_effect=RuntimeError("写标题失败"),
), mock.patch("app.editor.close_tab", return_value=True) as close_tab, mock.patch(
"app.editor.time.sleep"
) as sleep:
result = editor.apply_task(
{"debug_port": 9222},
{"item_id": "51100639510", "new_title": "新标题"},
close_success_tab=False,
)
self.assertFalse(result["committed"])
self.assertEqual("写标题失败", result["error"])
self.assertTrue(cdp.closed)
close_tab.assert_called_once_with("target-new", host="127.0.0.1:9222")
sleep.assert_not_called()
def test_apply_task_passes_old_cover_backup_to_replace_cover(self):
cdp = FakeProductCDP("ws-new")