Files
iqudo-top1/internal/resultcontract/schema_test.go
2026-08-18 16:27:02 +08:00

22 lines
1.0 KiB
Go

package resultcontract
import "testing"
func TestValidateResult(t *testing.T) {
schema, err := ParseAndValidate([]byte(`{"fields":[{"key":"recommended_products","name":"成功推荐商品","type":"array","items":{"type":"object","fields":[{"key":"product_id","name":"商品 ID","type":"string","required":true},{"key":"quantity","name":"数量","type":"integer"}]}},{"key":"note","name":"备注","type":"text"}]}`))
if err != nil {
t.Fatal(err)
}
if err := ValidateResult(schema, nil); err != nil {
t.Fatalf("empty result should be allowed: %v", err)
}
valid := map[string]interface{}{"recommended_products": []interface{}{map[string]interface{}{"product_id": "A", "quantity": float64(1)}}}
if err := ValidateResult(schema, valid); err != nil {
t.Fatalf("valid result rejected: %v", err)
}
invalid := map[string]interface{}{"recommended_products": []interface{}{map[string]interface{}{"quantity": float64(1)}}}
if err := ValidateResult(schema, invalid); err == nil {
t.Fatal("missing nested required field should be rejected")
}
}