feat: 展示PDD商品和采购订单信息 (#164)

This commit is contained in:
chengma
2026-08-11 16:46:49 +08:00
parent 24497c55fd
commit 1f48d3a857
9 changed files with 319 additions and 31 deletions
+52 -1
View File
@@ -8,7 +8,7 @@ os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
from PyQt5.QtCore import Qt
from PyQt5.QtTest import QTest
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QApplication, QWidget
from src.task_detail_view import (
CopyableBodyLabel,
@@ -145,6 +145,57 @@ class TaskDetailViewTest(unittest.TestCase):
expected,
)
def test_purchase_result_shows_order_and_prefers_raw_order_time(self):
purchase_data = {
"purchase": {
"mode": "live",
"confirmed": {
"options": {"color": "黑色", "size": "L"},
"quantity": 2,
"unit_price_cent": 3990,
"total_price_cent": 7980,
},
"order_no": "ORDER-20260811",
"ordered_at": "2026-08-11T08:00:00+08:00",
"ordered_at_raw": "2026-08-11 08:00:00",
"match_status": "matched",
"payment_status": "unpaid",
}
}
detail = replace(
make_detail(purchase_data),
remote_task_id="PUR-001",
task_type=TaskType.PURCHASE,
)
data = build_task_detail_view_data(detail)
self.assertEqual(data.purchase.mode, "真实采购")
self.assertEqual(data.purchase.confirmed_spec, "黑色 / L")
self.assertEqual(data.purchase.order_no, "ORDER-20260811")
self.assertEqual(data.purchase.ordered_at, "2026-08-11 08:00:00")
self.assertEqual(data.purchase.match_status, "已匹配")
self.assertEqual(data.purchase.payment_status, "待付款")
window = TaskDetailWindow(detail)
self.assertIsNotNone(window.findChild(QWidget, "purchaseResultCard"))
self.assertTrue(
any(
label.text() == "ORDER-20260811"
for label in window.findChildren(CopyableBodyLabel)
)
)
window.close()
self.app.processEvents()
def test_collect_detail_does_not_show_purchase_result_card(self):
window = TaskDetailWindow(make_detail(collected_data()))
self.assertIsNone(window.findChild(QWidget, "purchaseResultCard"))
window.close()
self.app.processEvents()
def test_window_builds_color_section_before_size_section(self):
window = TaskDetailWindow(make_detail(collected_data()))