feat: 重构顺运宝规格主链路 (#88)
This commit is contained in:
@@ -22,18 +22,11 @@ const collectedThreeDimensions = `{
|
||||
|
||||
func seedPurchasableWorkflow(t *testing.T, db *sql.DB, sybID string) string {
|
||||
t.Helper()
|
||||
if err := repository.UpsertShopeeProduct(db, "SP-1", "测试上衣", "正常", ""); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
seedWorkflowSKU(t, db, "SKU-1", "SP-1", "黑色,M")
|
||||
order := seedWorkflowOrder(t, db, sybID, "SP-1", "黑色,M")
|
||||
order.PriceTwdCent = 999900
|
||||
if _, err := repository.UpsertSybOrder(db, order); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := AssignSybShopeeSKU(db, sybID, "SKU-1"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := AssociateShopeePdd(db, "SP-1", pddURLA, false); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -62,7 +55,7 @@ func TestSybMapping_动态维度保存并复用(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !detail.MappingValid {
|
||||
t.Fatal("保存后相同蝦皮 SKU + 当前 PDD 商品应自动复用")
|
||||
t.Fatal("保存后相同蝦皮商品规格 + 当前 PDD 商品应自动复用")
|
||||
}
|
||||
list, err := ListSybOrdersView(db, "", SybStagePurchaseReady, 1)
|
||||
if err != nil {
|
||||
@@ -73,6 +66,35 @@ func TestSybMapping_动态维度保存并复用(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSybMapping_同商品同规格第二条明细自动命中(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
key := seedPurchasableWorkflow(t, db, "SYB-1")
|
||||
if err := SaveSybMapping(db, "SYB-1", key, "USR-1"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
seedWorkflowOrder(t, db, "SYB-2", "SP-1", " 黑色,M ")
|
||||
detail, err := GetSybProcessingDetail(db, "SYB-2")
|
||||
if err != nil || detail == nil || !detail.MappingValid || detail.Stage != SybStagePurchaseReady {
|
||||
t.Fatalf("第二条相同规格应自动命中: detail=%+v err=%v", detail, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSybMapping_解析失败原文仍可保存且空规格被阻断(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
key := seedPurchasableWorkflow(t, db, "SYB-BASE")
|
||||
seedWorkflowOrder(t, db, "SYB-DIRTY", "SP-1", "紅色,3XL建議80-90公斤】")
|
||||
if err := SaveSybMapping(db, "SYB-DIRTY", key, "USR-1"); err != nil {
|
||||
t.Fatalf("规格解析失败不应影响身份键映射: %v", err)
|
||||
}
|
||||
seedWorkflowOrder(t, db, "SYB-EMPTY", "SP-1", "")
|
||||
if err := SaveSybMapping(db, "SYB-EMPTY", key, "USR-1"); err == nil {
|
||||
t.Fatal("空规格不得保存映射")
|
||||
}
|
||||
if _, err := AssociateSybPdd(db, "SYB-EMPTY", pddURLA, false); err == nil {
|
||||
t.Fatal("空规格不得进入采购关联流程")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSybMapping_换品和选项消失都会失效(t *testing.T) {
|
||||
t.Run("换 PDD 商品隔离旧映射", func(t *testing.T) {
|
||||
db := newTestDB(t)
|
||||
@@ -86,6 +108,13 @@ func TestSybMapping_换品和选项消失都会失效(t *testing.T) {
|
||||
if detail.MappingValid {
|
||||
t.Fatal("更换 PDD 商品后不得复用旧映射")
|
||||
}
|
||||
if _, err := AssociateShopeePdd(db, "SP-1", pddURLA, true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
detail, _ = GetSybProcessingDetail(db, "SYB-1")
|
||||
if !detail.MappingValid {
|
||||
t.Fatal("换回原 PDD 商品后应复用原映射")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("最新采集结果删除原选项", func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user