Closed
Description
var broken = {
"definitions": {
"car": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"make": {
"type": "string"
},
"brand": {
"items": {
"$ref": "#/definitions/brand"
}
}
}
},
"tag": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"value": {
"type": "string"
}
}
},
"brand": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
}
}
}
}
func TestItemsExpansion(t *testing.T) {
spec := new(Swagger)
err = json.Unmarshal(broken, spec)
assert.NoError(t, err)
resolver, err := defaultSchemaLoader(spec, nil, nil)
assert.NoError(t, err)
schema := spec.Definitions["car"]
oldBrand := schema.Properties["brand"]
assert.NotEmpty(t, oldBrand.Items.Schema.Ref.String())
assert.NotEqual(t, spec.Definitions["brand"], oldBrand)
err = expandSchema(&schema, resolver)
assert.NoError(t, err)
newBrand := schema.Properties["brand"]
// Assertions below are going to fail.
assert.Empty(t, newBrand.Items.Schema.Ref.String())
assert.Equal(t, spec.Definitions["brand"], *newBrand.Items.Schema)
}