Skip to content

Commit

Permalink
Adding more schema rendering tests
Browse files Browse the repository at this point in the history
  • Loading branch information
daveshanley committed May 1, 2024
1 parent e6ccd8b commit b02c6e6
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 14 deletions.
33 changes: 19 additions & 14 deletions renderer/schema_renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,18 @@ func (wr *SchemaRenderer) DiveIntoSchema(schema *base.Schema, key string, struct
maxLength = *schema.MaxLength
}

if schema.Examples != nil && len(schema.Examples) > 0 {
var renderedExample any
exmp := schema.Examples[0]
if exmp != nil {
var ex any
_ = exmp.Decode(&ex)
renderedExample = fmt.Sprint(ex)
}
structure[key] = renderedExample
return
}

switch schema.Format {
case dateTimeType:
structure[key] = time.Now().Format(time.RFC3339)
Expand Down Expand Up @@ -243,23 +255,16 @@ func (wr *SchemaRenderer) DiveIntoSchema(schema *base.Schema, key string, struct
maximum = int64(*schema.Maximum)
}

if schema.Example != nil {
var example any
_ = schema.Example.Decode(&example)
structure[key] = example
return
}
if schema.Examples != nil {
if len(schema.Examples) > 0 {
renderedExamples := make([]any, len(schema.Examples))
for i, exmp := range schema.Examples {
if exmp != nil {
var ex any
_ = exmp.Decode(&ex)
renderedExamples[i] = fmt.Sprint(ex)
}
var renderedExample any
exmp := schema.Examples[0]
if exmp != nil {
var ex any
_ = exmp.Decode(&ex)
renderedExample = ex
}
structure[key] = renderedExamples
structure[key] = renderedExample
return
}
}
Expand Down
32 changes: 32 additions & 0 deletions renderer/schema_renderer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1111,6 +1111,38 @@ properties:
assert.Equal(t, `{"bigint":8821239038968084,"bigintStr":"9223372036854775808","decimal":3.141592653589793,"decimalStr":"3.14159265358979344719667586"}`, string(rendered))
}

func TestRenderSchema_NonStandard_Format_MultiExample(t *testing.T) {
testObject := `type: object
properties:
bigint:
type: integer
format: bigint
examples:
- 8821239038968084
bigintStr:
type: string
format: bigint
examples:
- "9223372036854775808"
decimal:
type: number
format: decimal
examples:
- 3.141592653589793
decimalStr:
type: string
format: decimal
examples:
- "3.14159265358979344719667586"`

compiled := getSchema([]byte(testObject))
schema := make(map[string]any)
wr := createSchemaRenderer()
wr.DiveIntoSchema(compiled, "pb33f", schema, 0)
rendered, _ := json.Marshal(schema["pb33f"])
assert.Equal(t, `{"bigint":8821239038968084,"bigintStr":"9223372036854775808","decimal":3.141592653589793,"decimalStr":"3.14159265358979344719667586"}`, string(rendered))
}

func TestCreateRendererUsingDefaultDictionary(t *testing.T) {
assert.NotNil(t, CreateRendererUsingDefaultDictionary())
}
Expand Down

0 comments on commit b02c6e6

Please sign in to comment.