mirror of https://github.com/databricks/cli.git
add test for bfs final schema
This commit is contained in:
parent
2d62c0ceb7
commit
5f48b58366
|
@ -272,6 +272,13 @@ func (c *constructor) fromTypeStruct(typ reflect.Type) (Schema, error) {
|
|||
continue
|
||||
}
|
||||
|
||||
// Skip property if it is already present in the schema.
|
||||
// This can happen if the same field is defined multiple times across
|
||||
// a tree of embedded structs. For example see: TestHigherLevelEmbeddedFieldIsInSchema
|
||||
if _, ok := res.Properties[fieldName]; ok {
|
||||
continue
|
||||
}
|
||||
|
||||
// "omitempty" tags in the Go SDK structs represent fields that not are
|
||||
// required to be present in the API payload. Thus its absence in the
|
||||
// tags list indicates that the field is required.
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
|
||||
"github.com/databricks/cli/libs/jsonschema/test_types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestFromTypeBasic(t *testing.T) {
|
||||
|
@ -166,6 +167,46 @@ func TestGetStructFields(t *testing.T) {
|
|||
assert.Equal(t, "InnerField", fields[3].Name)
|
||||
}
|
||||
|
||||
func TestHigherLevelEmbeddedFieldIsInSchema(t *testing.T) {
|
||||
type Inner struct {
|
||||
Override string `json:"override,omitempty"`
|
||||
}
|
||||
|
||||
type EmbeddedOne struct {
|
||||
Inner
|
||||
}
|
||||
|
||||
type EmbeddedTwo struct {
|
||||
Override int `json:"override,omitempty"`
|
||||
}
|
||||
|
||||
type Outer struct {
|
||||
EmbeddedOne
|
||||
EmbeddedTwo
|
||||
}
|
||||
|
||||
intRef := "#/$defs/int"
|
||||
expected := Schema{
|
||||
Type: "object",
|
||||
Definitions: map[string]any{
|
||||
"int": Schema{
|
||||
Type: "integer",
|
||||
},
|
||||
},
|
||||
Properties: map[string]*Schema{
|
||||
"override": {
|
||||
Reference: &intRef,
|
||||
},
|
||||
},
|
||||
AdditionalProperties: false,
|
||||
Required: []string{},
|
||||
}
|
||||
|
||||
s, err := FromType(reflect.TypeOf(Outer{}), nil)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, expected, s)
|
||||
}
|
||||
|
||||
func TestFromTypeNested(t *testing.T) {
|
||||
type Inner struct {
|
||||
S string `json:"s"`
|
||||
|
|
Loading…
Reference in New Issue