@ -556,119 +556,3 @@ chapter:
}
}
}
}
}
}
func TestReadSchema ( t * testing . T ) {
schemaTest := ` {
"$schema" : "http://json-schema.org/draft-07/schema#" ,
"properties" : {
"addresses" : {
"description" : "List of addresses" ,
"items" : {
"properties" : {
"city" : {
"type" : "string"
} ,
"number" : {
"type" : "number"
} ,
"street" : {
"type" : "string"
}
} ,
"type" : "object"
} ,
"type" : "array"
} ,
"age" : {
"description" : "Age" ,
"minimum" : 0 ,
"type" : "integer"
} ,
"employmentInfo" : {
"properties" : {
"salary" : {
"minimum" : 0 ,
"type" : "number"
} ,
"title" : {
"type" : "string"
}
} ,
"required" : [
"salary"
] ,
"type" : "object"
} ,
"firstname" : {
"description" : "First name" ,
"type" : "string"
} ,
"lastname" : {
"type" : "string"
} ,
"likesCoffee" : {
"type" : "boolean"
} ,
"phoneNumbers" : {
"items" : {
"type" : "string"
} ,
"type" : "array"
}
} ,
"required" : [
"firstname" ,
"lastname" ,
"addresses" ,
"employmentInfo"
] ,
"title" : "Values" ,
"type" : "object"
}
`
data , err := ReadValues ( [ ] byte ( schemaTest ) )
if err != nil {
t . Fatalf ( "Error parsing bytes: %s" , err )
}
matchSchema ( t , data )
}
func matchSchema ( t * testing . T , data map [ string ] interface { } ) {
if o , err := ttpl ( "{{len .required}}" , data ) ; err != nil {
t . Errorf ( "len required: %s" , err )
} else if o != "4" {
t . Errorf ( "Expected length of .required to be 4, got %s" , o )
}
assertEqualProperty ( t , ".title" , "Values" , data )
assertEqualProperty ( t , ".type" , "object" , data )
assertEqualProperty ( t , ".properties.firstname.description" , "First name" , data )
assertEqualProperty ( t , ".properties.firstname.type" , "string" , data )
assertEqualProperty ( t , ".properties.lastname.type" , "string" , data )
assertEqualProperty ( t , ".properties.likesCoffee.type" , "boolean" , data )
assertEqualProperty ( t , ".properties.age.description" , "Age" , data )
assertEqualProperty ( t , ".properties.age.type" , "integer" , data )
assertEqualProperty ( t , ".properties.age.minimum" , "0" , data )
assertEqualProperty ( t , ".properties.employmentInfo.type" , "object" , data )
assertEqualProperty ( t , ".properties.employmentInfo.properties.salary.type" , "number" , data )
assertEqualProperty ( t , ".properties.employmentInfo.properties.salary.minimum" , "0" , data )
assertEqualProperty ( t , ".properties.employmentInfo.properties.title.type" , "string" , data )
assertEqualProperty ( t , ".properties.employmentInfo.required" , "[salary]" , data )
assertEqualProperty ( t , ".properties.addresses.description" , "List of addresses" , data )
assertEqualProperty ( t , ".properties.addresses.type" , "array" , data )
assertEqualProperty ( t , ".properties.addresses.items.type" , "object" , data )
assertEqualProperty ( t , ".properties.addresses.items.properties.city.type" , "string" , data )
assertEqualProperty ( t , ".properties.addresses.items.properties.street.type" , "string" , data )
assertEqualProperty ( t , ".properties.addresses.items.properties.number.type" , "number" , data )
assertEqualProperty ( t , ".properties.phoneNumbers.type" , "array" , data )
assertEqualProperty ( t , ".properties.phoneNumbers.items.type" , "string" , data )
assertEqualProperty ( t , ".required" , "[firstname lastname addresses employmentInfo]" , data )
}
func assertEqualProperty ( t * testing . T , property , expected string , data map [ string ] interface { } ) {
if o , err := ttpl ( "{{" + property + "}}" , data ) ; err != nil {
t . Errorf ( "%s: %s" , property , err )
} else if o != expected {
t . Errorf ( "Expected %s to be %s, got %s" , property , expected , o )
}
}