31 lines
879 B
Go
31 lines
879 B
Go
package repository
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"database/sql"
|
|
_ "modernc.org/sqlite"
|
|
)
|
|
|
|
func TestReplaceEmptyPDDSpecsUsesExpectedRawAsLock(t *testing.T) {
|
|
db, err := sql.Open("sqlite", ":memory:")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
if _, err := db.Exec(`CREATE TABLE pdd_products(goods_id TEXT PRIMARY KEY, skus_json TEXT, deleted_at TEXT, updated_at TEXT)`); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := db.Exec(`INSERT INTO pdd_products(goods_id,skus_json) VALUES('P1','')`); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ok, err := ReplaceEmptyPDDSpecs(db, "P1", "", `{"skus":[]}`, "2026-08-12T00:00:00Z")
|
|
if err != nil || !ok {
|
|
t.Fatalf("首次更新应成功: ok=%v err=%v", ok, err)
|
|
}
|
|
ok, err = ReplaceEmptyPDDSpecs(db, "P1", "", `{"skus":[1]}`, "2026-08-12T00:00:01Z")
|
|
if err != nil || ok {
|
|
t.Fatalf("原值已变化时必须跳过: ok=%v err=%v", ok, err)
|
|
}
|
|
}
|