feat: 实现 PDD 任务详情窗口 (#39)

This commit is contained in:
chengma
2026-08-08 09:46:58 +08:00
parent 6c12e058c3
commit cb323d37ba
5 changed files with 654 additions and 0 deletions
+59
View File
@@ -225,6 +225,65 @@ class PDDTaskPageEventTest(unittest.TestCase):
self.assertFalse(page.taskModel.canFetchMore())
page.deleteLater()
def test_detail_signal_opens_one_reusable_non_modal_window(self):
self._add_task(1)
started = self.repository.start_collect_run("PDD-001", "USB-001")
self.repository.save_collect_result(
"PDD-001",
started.attempt_id,
{
"goods_id": "1",
"title": "测试商品",
"dimensions": [
{
"key": "color",
"name": "颜色",
"values": [{"text": "黑色", "available": True}],
},
{
"key": "size",
"name": "尺码",
"values": [{"text": "M", "available": True}],
},
],
"skus": [
{
"options": {"color": "黑色", "size": "M"},
"price_cent": 3990,
}
],
},
)
page = PDDTaskPage()
events = PDDTaskPageEvent(page, self.repository)
page.detailRequested.emit("PDD-001")
self.app.processEvents()
first = events._detail_windows["PDD-001"]
self.assertTrue(first.isVisible())
self.assertFalse(first.isModal())
page.detailRequested.emit("PDD-001")
self.app.processEvents()
self.assertIs(events._detail_windows["PDD-001"], first)
first.close()
self.app.processEvents()
self.assertNotIn("PDD-001", events._detail_windows)
events.shutdown()
page.deleteLater()
def test_missing_detail_does_not_open_empty_window(self):
page = PDDTaskPage()
events = PDDTaskPageEvent(page, self.repository)
page.detailRequested.emit("PDD-NOT-FOUND")
self.app.processEvents()
self.assertEqual(events._detail_windows, {})
events.shutdown()
page.deleteLater()
def test_summary_to_row_does_not_copy_detail_json(self):
summary = TaskSummary(
id=1,