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") } }