Files
cmautobuy/admin/service/shopee_pdd_test.go
T

104 lines
3.3 KiB
Go

package service
import (
"errors"
"testing"
"cmautobuy/admin/repository"
)
const (
pddURLA = "https://mobile.yangkeduo.com/goods.html?goods_id=737116531267"
pddURLB = "https://mobile.yangkeduo.com/goods.html?goods_id=937122477375"
)
func TestAssociateShopeePdd_新建并重复复用(t *testing.T) {
db := newTestDB(t)
seedShopeeProduct(t, db, "1001", "商品一")
for i := 0; i < 2; i++ {
got, err := AssociateShopeePdd(db, "1001", pddURLA, false)
if err != nil {
t.Fatalf("第 %d 次关联失败: %v", i+1, err)
}
if got != "737116531267" {
t.Fatalf("goods_id = %q", got)
}
}
var count int
db.QueryRow(`SELECT COUNT(*) FROM pdd_products WHERE goods_id = ?`, "737116531267").Scan(&count)
if count != 1 {
t.Fatalf("同一 PDD 商品建了 %d 条,想要 1", count)
}
}
func TestAssociateShopeePdd_无效链接不写任何数据(t *testing.T) {
db := newTestDB(t)
seedShopeeProduct(t, db, "1001", "商品一")
if _, err := AssociateShopeePdd(db, "1001", "https://p.pinduoduo.com/short", false); err == nil {
t.Fatal("短链接应被拒绝")
}
var pddCount int
db.QueryRow(`SELECT COUNT(*) FROM pdd_products`).Scan(&pddCount)
product, _ := repository.GetShopeeProductByGoodsID(db, "1001")
if pddCount != 0 || product.PddGoodsID != "" {
t.Fatalf("失败后仍写入:pdd=%d, link=%q", pddCount, product.PddGoodsID)
}
}
func TestAssociateShopeePdd_换商品必须确认且旧档案保留(t *testing.T) {
db := newTestDB(t)
seedShopeeProduct(t, db, "1001", "商品一")
if _, err := AssociateShopeePdd(db, "1001", pddURLA, false); err != nil {
t.Fatal(err)
}
if _, err := AssociateShopeePdd(db, "1001", pddURLB, false); !errors.Is(err, ErrPddAssociationReplaceRequired) {
t.Fatalf("未确认换品错误 = %v", err)
}
product, _ := repository.GetShopeeProductByGoodsID(db, "1001")
if product.PddGoodsID != "737116531267" {
t.Fatalf("未确认时关联被改成 %q", product.PddGoodsID)
}
if _, err := AssociateShopeePdd(db, "1001", pddURLB, true); err != nil {
t.Fatal(err)
}
product, _ = repository.GetShopeeProductByGoodsID(db, "1001")
if product.PddGoodsID != "937122477375" {
t.Fatalf("确认后关联 = %q", product.PddGoodsID)
}
old, _ := repository.GetPddProductByGoodsID(db, "737116531267")
if old == nil {
t.Fatal("换品不应删除旧 PDD 档案")
}
}
func TestAssociateShopeePdd_软删除商品可复活(t *testing.T) {
db := newTestDB(t)
seedShopeeProduct(t, db, "1001", "商品一")
repository.EnsurePddProduct(db, "737116531267", pddURLA)
if _, err := repository.SoftDeletePddProducts(db, []string{"737116531267"}); err != nil {
t.Fatal(err)
}
if _, err := AssociateShopeePdd(db, "1001", pddURLA, false); err != nil {
t.Fatal(err)
}
p, _ := repository.GetPddProductByGoodsID(db, "737116531267")
if p == nil || p.IsDeleted() {
t.Fatal("关联应复活软删除的 PDD 商品")
}
}
func TestCreateShopeePddCollectTask_按当前关联创建(t *testing.T) {
db := newTestDB(t)
seedShopeeProduct(t, db, "1001", "商品一")
AssociateShopeePdd(db, "1001", pddURLA, false)
result, err := CreateShopeePddCollectTask(db, "1001")
if err != nil || result.Created != 1 {
t.Fatalf("创建结果 = %+v, err=%v", result, err)
}
_, _, _, ok := collectTaskOf(t, db, "737116531267")
if !ok {
t.Fatal("没有创建采集任务")
}
}