Skip to content

Commit db4cb84

Browse files
test: verify origin tracking for mapping-valued schema fields
Adds TestOrigin_MappingFields covering dependentRequired, dependentSchemas, and patternProperties — fields that were missing from Origin.Fields before yaml3 v0.0.12. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 16e2dec commit db4cb84

2 files changed

Lines changed: 74 additions & 0 deletions

File tree

openapi3/origin_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,3 +834,50 @@ func TestOrigin_Disabled(t *testing.T) {
834834
require.Nil(t, doc.Info.Origin)
835835
require.Nil(t, doc.Paths.Origin)
836836
}
837+
838+
// TestOrigin_MappingFields verifies that mapping-valued schema fields
839+
// (dependentRequired, dependentSchemas, patternProperties) have their
840+
// key locations tracked in Origin.Fields. Before yaml3 v0.0.12,
841+
// buildOriginSeq only tracked scalar and sequence values, so these
842+
// mapping-valued fields were missing from the origin and source
843+
// location lookups returned nil.
844+
func TestOrigin_MappingFields(t *testing.T) {
845+
loader := NewLoader()
846+
loader.IncludeOrigin = true
847+
848+
doc, err := loader.LoadFromFile("testdata/origin/mapping_fields.yaml")
849+
require.NoError(t, err)
850+
851+
schema := doc.Paths.Find("/test").Get.Responses.Value("200").Value.
852+
Content["application/json"].Schema.Value.Properties["metadata"].Value
853+
require.NotNil(t, schema.Origin)
854+
855+
file := "testdata/origin/mapping_fields.yaml"
856+
857+
// dependentRequired is a map[string][]string — mapping-valued
858+
require.Contains(t, schema.Origin.Fields, "dependentRequired")
859+
require.Equal(t, Location{
860+
File: file,
861+
Line: 18,
862+
Column: 21,
863+
Name: "dependentRequired",
864+
}, schema.Origin.Fields["dependentRequired"])
865+
866+
// dependentSchemas is a Schemas map — mapping-valued
867+
require.Contains(t, schema.Origin.Fields, "dependentSchemas")
868+
require.Equal(t, Location{
869+
File: file,
870+
Line: 22,
871+
Column: 21,
872+
Name: "dependentSchemas",
873+
}, schema.Origin.Fields["dependentSchemas"])
874+
875+
// patternProperties is a Schemas map — mapping-valued
876+
require.Contains(t, schema.Origin.Fields, "patternProperties")
877+
require.Equal(t, Location{
878+
File: file,
879+
Line: 25,
880+
Column: 21,
881+
Name: "patternProperties",
882+
}, schema.Origin.Fields["patternProperties"])
883+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
openapi: "3.1.0"
2+
info:
3+
title: Mapping Fields Origin Test
4+
version: "1.0"
5+
paths:
6+
/test:
7+
get:
8+
responses:
9+
"200":
10+
description: OK
11+
content:
12+
application/json:
13+
schema:
14+
type: object
15+
properties:
16+
metadata:
17+
type: object
18+
dependentRequired:
19+
name:
20+
- age
21+
- email
22+
dependentSchemas:
23+
credit_card:
24+
type: object
25+
patternProperties:
26+
"^x-":
27+
type: string

0 commit comments

Comments
 (0)