Initial commit of Descrybe v2 without local scratch artifacts.
Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
package shopify
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func TestApplyProductSyncScope(t *testing.T) {
|
||||
opt := SyncOptions{SyncLimit: defaultSyncLimit}
|
||||
id := uuid.New().String()
|
||||
err := applyProductSyncScope(&opt, ProductSyncScope{
|
||||
Limit: 50,
|
||||
Status: "Completed",
|
||||
Category: " Lamps ",
|
||||
ProductIDs: []string{id, id, " "},
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if opt.SyncLimit != 50 {
|
||||
t.Fatalf("limit=%d", opt.SyncLimit)
|
||||
}
|
||||
if opt.SyncFilterStatus != "completed" {
|
||||
t.Fatalf("status=%q", opt.SyncFilterStatus)
|
||||
}
|
||||
if opt.SyncFilterCategory != "Lamps" {
|
||||
t.Fatalf("category=%q", opt.SyncFilterCategory)
|
||||
}
|
||||
if len(opt.SyncOnlyIDs) != 1 || opt.SyncOnlyIDs[0] != id {
|
||||
t.Fatalf("ids=%v", opt.SyncOnlyIDs)
|
||||
}
|
||||
|
||||
err = applyProductSyncScope(&opt, ProductSyncScope{Status: "nope"})
|
||||
if !errors.Is(err, ErrInvalidSyncScope) {
|
||||
t.Fatalf("want ErrInvalidSyncScope, got %v", err)
|
||||
}
|
||||
|
||||
err = applyProductSyncScope(&opt, ProductSyncScope{Limit: maxSyncLimit + 1})
|
||||
if !errors.Is(err, ErrInvalidSyncScope) {
|
||||
t.Fatalf("want ErrInvalidSyncScope for limit, got %v", err)
|
||||
}
|
||||
|
||||
err = applyProductSyncScope(&opt, ProductSyncScope{ProductIDs: []string{"not-a-uuid"}})
|
||||
if !errors.Is(err, ErrInvalidSyncScope) {
|
||||
t.Fatalf("want ErrInvalidSyncScope for ids, got %v", err)
|
||||
}
|
||||
|
||||
err = applyProductSyncScope(&opt, ProductSyncScope{Category: strings.Repeat("c", maxCategoryFilterLen+1)})
|
||||
if !errors.Is(err, ErrInvalidSyncScope) {
|
||||
t.Fatalf("want ErrInvalidSyncScope for category length, got %v", err)
|
||||
}
|
||||
|
||||
tooMany := make([]string, maxSyncOnlyIDs+1)
|
||||
for i := range tooMany {
|
||||
tooMany[i] = uuid.New().String()
|
||||
}
|
||||
err = applyProductSyncScope(&opt, ProductSyncScope{ProductIDs: tooMany})
|
||||
if !errors.Is(err, ErrInvalidSyncScope) {
|
||||
t.Fatalf("want ErrInvalidSyncScope for product_ids max, got %v", err)
|
||||
}
|
||||
|
||||
err = applyProductSyncScope(&opt, ProductSyncScope{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if opt.SyncFilterStatus != "" || opt.SyncFilterCategory != "" || len(opt.SyncOnlyIDs) != 0 {
|
||||
t.Fatalf("empty scope should clear one-shot filters: %#v", opt)
|
||||
}
|
||||
if opt.SyncLimit != 50 {
|
||||
t.Fatalf("empty scope should keep prior sync_limit preference; got %d", opt.SyncLimit)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizeSyncFilterStatus(t *testing.T) {
|
||||
got, err := normalizeSyncFilterStatus(" needs_review ")
|
||||
if err != nil || got != "needs_review" {
|
||||
t.Fatalf("got=%q err=%v", got, err)
|
||||
}
|
||||
_, err = normalizeSyncFilterStatus("draft")
|
||||
if !errors.Is(err, ErrInvalidSyncScope) {
|
||||
t.Fatalf("err=%v", err)
|
||||
}
|
||||
if !strings.Contains(err.Error(), "invalid status") {
|
||||
t.Fatalf("msg=%q", err.Error())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user