Added polymorphic/array ignore to document config.

Now a document can be pre-configured to ignore polymorphic circular references, and array references.

Signed-off-by: quobix <dave@quobix.com>
This commit is contained in:
quobix
2023-09-20 06:37:48 -04:00
parent e624607a56
commit f0a968bce4
4 changed files with 90 additions and 6 deletions

View File

@@ -790,3 +790,71 @@ paths:
assert.Equal(t, spec, strings.TrimSpace(string(rend)))
}
func TestDocument_IgnorePolymorphicCircularReferences(t *testing.T) {
var d = `openapi: 3.1.0
components:
schemas:
ProductCategory:
type: "object"
properties:
name:
type: "string"
children:
type: "object"
anyOf:
- $ref: "#/components/schemas/ProductCategory"
description: "Array of sub-categories in the same format."
required:
- "name"
- "children"`
config := datamodel.NewClosedDocumentConfiguration()
config.IgnorePolymorphicCircularReferences = true
doc, err := NewDocumentWithConfiguration([]byte(d), config)
if err != nil {
panic(err)
}
m, errs := doc.BuildV3Model()
assert.Len(t, errs, 0)
assert.Len(t, m.Index.GetCircularReferences(), 0)
}
func TestDocument_IgnoreArrayCircularReferences(t *testing.T) {
var d = `openapi: 3.1.0
components:
schemas:
ProductCategory:
type: "object"
properties:
name:
type: "string"
children:
type: "array"
items:
$ref: "#/components/schemas/ProductCategory"
description: "Array of sub-categories in the same format."
required:
- "name"
- "children"`
config := datamodel.NewClosedDocumentConfiguration()
config.IgnoreArrayCircularReferences = true
doc, err := NewDocumentWithConfiguration([]byte(d), config)
if err != nil {
panic(err)
}
m, errs := doc.BuildV3Model()
assert.Len(t, errs, 0)
assert.Len(t, m.Index.GetCircularReferences(), 0)
}