Skip to content

Commit abb387e

Browse files
committed
Apply suggestions from review
1 parent d115a79 commit abb387e

2 files changed

Lines changed: 23 additions & 22 deletions

File tree

internal/fields/validate.go

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -828,31 +828,32 @@ func skipValidationForField(key string) bool {
828828
// skipLeafOfObject checks if the element is a child of an object that was skipped in some previous
829829
// version of the spec. This is relevant in documents that store fields without subobjects.
830830
func skipLeafOfObject(root, name string, specVersion semver.Version, schema []FieldDefinition) bool {
831-
if specVersion.LessThan(semver3_0_1) {
832-
// Check if this is a subobject of an object we didn't traverse.
833-
if !strings.Contains(name, ".") {
831+
// We are only skipping validation of these fields on versions older than 3.0.1.
832+
if !specVersion.LessThan(semver3_0_1) {
833+
return false
834+
}
835+
836+
// If it doesn't contain a dot in the name, we have traversed its parent, if any.
837+
if !strings.Contains(name, ".") {
838+
return false
839+
}
840+
841+
key := name
842+
if root != "" {
843+
key = root + "." + name
844+
}
845+
_, ancestor := findAncestorElementDefinition(key, schema, func(key string, def *FieldDefinition) bool {
846+
// Don't look for ancestors beyond root, these objects have been already traversed.
847+
if len(key) < len(root) {
834848
return false
835849
}
836-
key := name
837-
if root != "" {
838-
key = root + "." + name
839-
}
840-
_, ancestor := findAncestorElementDefinition(key, schema, func(key string, def *FieldDefinition) bool {
841-
// Don't look for ancestors beyond root, these objects have been already traversed.
842-
if len(key) < len(root) {
843-
return false
844-
}
845-
if !slices.Contains([]string{"group", "object", "nested", "flattened"}, def.Type) {
846-
return false
847-
}
848-
return true
849-
})
850-
if ancestor != nil {
851-
return true
850+
if !slices.Contains([]string{"group", "object", "nested", "flattened"}, def.Type) {
851+
return false
852852
}
853-
}
853+
return true
854+
})
854855

855-
return false
856+
return ancestor != nil
856857
}
857858

858859
func isFieldFamilyMatching(family, key string) bool {

internal/fields/validate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1108,7 +1108,7 @@ func TestSkipLeafOfObject(t *testing.T) {
11081108
// Cases we expect to skip depending on the version.
11091109
okRoots := []string{"flattened", "object", "group", "nested"}
11101110
for _, root := range okRoots {
1111-
t.Run("(empty root)", func(t *testing.T) {
1111+
t.Run("empty root with prefix "+root, func(t *testing.T) {
11121112
for _, c := range cases {
11131113
t.Run(c.name+"_"+c.version.String(), func(t *testing.T) {
11141114
found := skipLeafOfObject("", root+"."+c.name, *c.version, schema)

0 commit comments

Comments
 (0)