fix validation for full tables
This commit is contained in:
parent
fd59059101
commit
48917659ca
2 changed files with 23 additions and 4 deletions
|
@ -69,7 +69,7 @@ local function validateSchema(schema, input, errors)
|
||||||
-- recursive schema validation for generic tables
|
-- recursive schema validation for generic tables
|
||||||
errors[key] = errors[key] or {}
|
errors[key] = errors[key] or {}
|
||||||
validateSchema(field_schema.schema, input_value, errors[key])
|
validateSchema(field_schema.schema, input_value, errors[key])
|
||||||
if not errors[key] then
|
if next(errors[key]) == nil then
|
||||||
errors[key] = nil
|
errors[key] = nil
|
||||||
end
|
end
|
||||||
elseif wanted_type == 'list' then
|
elseif wanted_type == 'list' then
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
TestConfigSchemaValidator = {}
|
TestSchemaValidator = {}
|
||||||
|
|
||||||
local config = require('config')
|
local config = require('config')
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ function pprint(t, ident)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function TestConfigSchemaValidator:testBasicFields()
|
function TestSchemaValidator:testBasicFields()
|
||||||
local errors = config.validateSchema({a={type='string'}}, {a='test'})
|
local errors = config.validateSchema({a={type='string'}}, {a='test'})
|
||||||
lu.assertIs(len(errors), 0)
|
lu.assertIs(len(errors), 0)
|
||||||
local errors = config.validateSchema({a={type='number'}}, {a=123})
|
local errors = config.validateSchema({a={type='number'}}, {a=123})
|
||||||
|
@ -34,10 +34,29 @@ function TestConfigSchemaValidator:testBasicFields()
|
||||||
lu.assertIs(len(errors), 1)
|
lu.assertIs(len(errors), 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
function TestConfigSchemaValidator:testList()
|
function TestSchemaValidator:testList()
|
||||||
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3}})
|
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3}})
|
||||||
lu.assertIs(len(errors), 0)
|
lu.assertIs(len(errors), 0)
|
||||||
|
|
||||||
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3,'asd'}})
|
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3,'asd'}})
|
||||||
lu.assertIs(len(errors), 1)
|
lu.assertIs(len(errors), 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TestSchemaValidator:testTable()
|
||||||
|
local errors = config.validateSchema(
|
||||||
|
{
|
||||||
|
a={
|
||||||
|
type='table',
|
||||||
|
schema={
|
||||||
|
b={
|
||||||
|
type='number'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{a=
|
||||||
|
{b=2}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
lu.assertIs(len(errors), 0)
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in a new issue