feat: 采购详情展示 PDD 核单结果 (#125)
This commit is contained in:
@@ -3,6 +3,7 @@ package service
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"cmautobuy/admin/model"
|
||||
@@ -368,6 +369,66 @@ func TestGetTaskDetail_采购任务显示专有字段(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTaskDetail_采购成功独立显示PDD核单结果(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
insertTestTask(t, db, testTaskParams{
|
||||
taskID: "PUR-ORDER", taskType: model.TaskPurchase, status: model.TaskSucceeded,
|
||||
resultData: `{"purchase":{"order_no":"PDD-20260810-001","ordered_at":"2026-08-10T11:12:13Z","payment_status":"unpaid","match_status":"matched","order_submitted":true}}`,
|
||||
})
|
||||
|
||||
d, err := GetTaskDetail(db, "PUR-ORDER")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !d.HasPddOrder || d.PddOrderNo != "PDD-20260810-001" {
|
||||
t.Fatalf("PDD 订单编号没有结构化显示: %+v", d)
|
||||
}
|
||||
if d.PddOrderedAt != formatLocalTime("2026-08-10T11:12:13Z") {
|
||||
t.Errorf("UTC 下单时间应转为本地时间,实际 %q", d.PddOrderedAt)
|
||||
}
|
||||
if d.PddPaymentStatusText != "未付款(Client 上报时)" ||
|
||||
d.PddOrderResultText != "Admin 不会查询 PDD 实时付款状态。" {
|
||||
t.Errorf("付款状态说明不明确: status=%q help=%q",
|
||||
d.PddPaymentStatusText, d.PddOrderResultText)
|
||||
}
|
||||
if !d.HasResult || !strings.Contains(d.ResultData, `"order_no":"PDD-20260810-001"`) {
|
||||
t.Error("结构化展示后仍必须保留原始结果")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTaskDetail_核单结果状态分别显示(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
tests := []struct {
|
||||
name string
|
||||
status model.TaskStatus
|
||||
resultData string
|
||||
want string
|
||||
}{
|
||||
{"等待上报", model.TaskClaimed, "", "等待 Client 核单上报。"},
|
||||
{"人工处理", model.TaskManualReview, "", "订单结果不确定,请结合错误信息人工核对。"},
|
||||
{"非法JSON", model.TaskSucceeded, `{`, "采购结果格式异常,请展开完整结果进行诊断。"},
|
||||
{"缺少purchase", model.TaskSucceeded, `{}`, "采购结果格式异常,请展开完整结果进行诊断。"},
|
||||
{"尚未匹配", model.TaskSucceeded, `{"purchase":{"match_status":"not_found"}}`, "本次结果没有已匹配的 PDD 订单。"},
|
||||
{"时间非法", model.TaskSucceeded, `{"purchase":{"order_no":"PDD-1","ordered_at":"2026-08-10 11:12","payment_status":"unpaid","match_status":"matched","order_submitted":true}}`, "采购结果中的下单时间格式异常,请展开完整结果进行诊断。"},
|
||||
}
|
||||
for i, tc := range tests {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
taskID := fmt.Sprintf("PUR-STATE-%d", i)
|
||||
insertTestTask(t, db, testTaskParams{
|
||||
taskID: taskID, taskType: model.TaskPurchase,
|
||||
status: tc.status, resultData: tc.resultData,
|
||||
})
|
||||
d, err := GetTaskDetail(db, taskID)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if d.HasPddOrder || d.PddOrderResultText != tc.want {
|
||||
t.Errorf("状态说明不对: HasPddOrder=%t text=%q", d.HasPddOrder, d.PddOrderResultText)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTaskDetail_采集任务不带采购专有字段(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
insertTestTask(t, db, testTaskParams{taskID: "COL-1", taskType: model.TaskCollect, status: model.TaskPending, pddGoodsID: "111"})
|
||||
@@ -382,6 +443,9 @@ func TestGetTaskDetail_采集任务不带采购专有字段(t *testing.T) {
|
||||
if d.SpecText != "" || d.QuantityText != "" || d.PriceLimitText != "" {
|
||||
t.Errorf("采集任务不该填充采购专有字段: spec=%q qty=%q price=%q", d.SpecText, d.QuantityText, d.PriceLimitText)
|
||||
}
|
||||
if d.HasPddOrder || d.PddOrderResultText != "" {
|
||||
t.Error("采集任务不应生成 PDD 核单结果展示")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTaskDetail_有错误信息时显示(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user