* fix: invalid schema for function 'func_name': None is not of type 'object' (#429)(#432) * test: add integration test for function call (#429)(#432) * style: remove duplicate import (#429)(#432)
This commit is contained in:
committed by
GitHub
parent
f028c289d2
commit
c3b2451f7c
@@ -36,23 +36,14 @@ type Definition struct {
|
||||
Items *Definition `json:"items,omitempty"`
|
||||
}
|
||||
|
||||
func (d *Definition) MarshalJSON() ([]byte, error) {
|
||||
d.initializeProperties()
|
||||
return json.Marshal(*d)
|
||||
}
|
||||
|
||||
func (d *Definition) initializeProperties() {
|
||||
func (d Definition) MarshalJSON() ([]byte, error) {
|
||||
if d.Properties == nil {
|
||||
d.Properties = make(map[string]Definition)
|
||||
return
|
||||
}
|
||||
|
||||
for k, v := range d.Properties {
|
||||
if v.Properties == nil {
|
||||
v.Properties = make(map[string]Definition)
|
||||
} else {
|
||||
v.initializeProperties()
|
||||
}
|
||||
d.Properties[k] = v
|
||||
}
|
||||
type Alias Definition
|
||||
return json.Marshal(struct {
|
||||
Alias
|
||||
}{
|
||||
Alias: (Alias)(d),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -172,30 +172,40 @@ func TestDefinition_MarshalJSON(t *testing.T) {
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
gotBytes, err := json.Marshal(&tt.def)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to Marshal JSON: error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
var got map[string]interface{}
|
||||
err = json.Unmarshal(gotBytes, &got)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to Unmarshal JSON: error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
wantBytes := []byte(tt.want)
|
||||
var want map[string]interface{}
|
||||
err = json.Unmarshal(wantBytes, &want)
|
||||
err := json.Unmarshal(wantBytes, &want)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to Unmarshal JSON: error = %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
got := structToMap(t, tt.def)
|
||||
gotPtr := structToMap(t, &tt.def)
|
||||
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Errorf("MarshalJSON() got = %v, want %v", got, want)
|
||||
}
|
||||
if !reflect.DeepEqual(gotPtr, want) {
|
||||
t.Errorf("MarshalJSON() gotPtr = %v, want %v", gotPtr, want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func structToMap(t *testing.T, v any) map[string]any {
|
||||
t.Helper()
|
||||
gotBytes, err := json.Marshal(v)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to Marshal JSON: error = %v", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
var got map[string]interface{}
|
||||
err = json.Unmarshal(gotBytes, &got)
|
||||
if err != nil {
|
||||
t.Errorf("Failed to Unmarshal JSON: error = %v", err)
|
||||
return nil
|
||||
}
|
||||
return got
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user