support $data ref in formatMaximum/Minimum and exclusiveFormatMaximum/Minimum, #81
parent
94f0d6e784
commit
10c6685027
|
@ -133,27 +133,31 @@ function regex(str) {
|
||||||
|
|
||||||
|
|
||||||
function compareDate(d1, d2) {
|
function compareDate(d1, d2) {
|
||||||
|
if (!(d1 && d2)) return;
|
||||||
if (d1 > d2) return 1;
|
if (d1 > d2) return 1;
|
||||||
if (d1 < d2) return -1;
|
if (d1 < d2) return -1;
|
||||||
return 0;
|
if (d1 === d2) return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function compareTime(t1, t2) {
|
function compareTime(t1, t2) {
|
||||||
|
if (!(t1 && t2)) return;
|
||||||
t1 = t1.match(TIME);
|
t1 = t1.match(TIME);
|
||||||
t2 = t2.match(TIME);
|
t2 = t2.match(TIME);
|
||||||
if (!(t1 && t2)) return 0;
|
if (!(t1 && t2)) return;
|
||||||
t1 = t1[1] + t1[2] + t1[3] + (t1[4]||'');
|
t1 = t1[1] + t1[2] + t1[3] + (t1[4]||'');
|
||||||
t2 = t2[1] + t2[2] + t2[3] + (t2[4]||'');
|
t2 = t2[1] + t2[2] + t2[3] + (t2[4]||'');
|
||||||
if (t1 > t2) return 1;
|
if (t1 > t2) return 1;
|
||||||
if (t1 < t2) return -1;
|
if (t1 < t2) return -1;
|
||||||
return 0;
|
if (t1 === t2) return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function compareDateTime(dt1, dt2) {
|
function compareDateTime(dt1, dt2) {
|
||||||
|
if (!(dt1 && dt2)) return;
|
||||||
dt1 = dt1.split(DATE_TIME_SEPARATOR);
|
dt1 = dt1.split(DATE_TIME_SEPARATOR);
|
||||||
dt2 = dt2.split(DATE_TIME_SEPARATOR);
|
dt2 = dt2.split(DATE_TIME_SEPARATOR);
|
||||||
return compareDate(dt1[0], dt2[0])
|
var res = compareDate(dt1[0], dt2[0]);
|
||||||
|| compareTime(dt1[1], dt2[1]);
|
if (res === undefined) return;
|
||||||
|
return res || compareTime(dt1[1], dt2[1]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,6 +111,11 @@
|
||||||
#}}
|
#}}
|
||||||
|
|
||||||
|
|
||||||
|
{{## def.$dataType:_type:
|
||||||
|
{{?$isData}} typeof {{=$schemaValue}} == _type && {{?}}
|
||||||
|
#}}
|
||||||
|
|
||||||
|
|
||||||
{{## def.$dataNotType:_type:
|
{{## def.$dataNotType:_type:
|
||||||
{{?$isData}} typeof {{=$schemaValue}} != _type || {{?}}
|
{{?$isData}} typeof {{=$schemaValue}} != _type || {{?}}
|
||||||
#}}
|
#}}
|
||||||
|
|
|
@ -94,7 +94,9 @@
|
||||||
custom: "'should pass \"{{=$rule.keyword}}\" keyword validation'",
|
custom: "'should pass \"{{=$rule.keyword}}\" keyword validation'",
|
||||||
patternGroups: "'should NOT have {{=$moreOrLess}} than {{=$limit}} properties matching pattern \"{{=it.util.escapeQuotes($pgProperty)}}\"'",
|
patternGroups: "'should NOT have {{=$moreOrLess}} than {{=$limit}} properties matching pattern \"{{=it.util.escapeQuotes($pgProperty)}}\"'",
|
||||||
switch: "'should pass \"switch\" keyword validation'",
|
switch: "'should pass \"switch\" keyword validation'",
|
||||||
constant: "'should be equal to constant'"
|
constant: "'should be equal to constant'",
|
||||||
|
_formatLimit: "'should be {{=$opStr}} \"{{#def.concatSchemaEQ}}\"'",
|
||||||
|
_exclusiveFormatLimit: "'{{=$exclusiveKeyword}} should be boolean'"
|
||||||
} #}}
|
} #}}
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,7 +126,9 @@
|
||||||
custom: "validate.schema{{=$schemaPath}}",
|
custom: "validate.schema{{=$schemaPath}}",
|
||||||
patternGroups: "validate.schema{{=$schemaPath}}",
|
patternGroups: "validate.schema{{=$schemaPath}}",
|
||||||
switch: "validate.schema{{=$schemaPath}}",
|
switch: "validate.schema{{=$schemaPath}}",
|
||||||
constant: "validate.schema{{=$schemaPath}}"
|
constant: "validate.schema{{=$schemaPath}}",
|
||||||
|
_formatLimit: "{{#def.schemaRefOrQS}}",
|
||||||
|
_exclusiveFormatLimit: "validate.schema{{=$schemaPath}}"
|
||||||
} #}}
|
} #}}
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,5 +157,7 @@
|
||||||
custom: "{ keyword: '{{=$rule.keyword}}' }",
|
custom: "{ keyword: '{{=$rule.keyword}}' }",
|
||||||
patternGroups: "{ reason: '{{=$reason}}', limit: {{=$limit}}, pattern: '{{=it.util.escapeQuotes($pgProperty)}}' }",
|
patternGroups: "{ reason: '{{=$reason}}', limit: {{=$limit}}, pattern: '{{=it.util.escapeQuotes($pgProperty)}}' }",
|
||||||
switch: "{ caseIndex: {{=$caseIndex}} }",
|
switch: "{ caseIndex: {{=$caseIndex}} }",
|
||||||
constant: "{}"
|
constant: "{}",
|
||||||
|
_formatLimit: "{ limit: {{#def.schemaValueQS}} }",
|
||||||
|
_exclusiveFormatLimit: "{}"
|
||||||
} #}}
|
} #}}
|
||||||
|
|
|
@ -0,0 +1,113 @@
|
||||||
|
{{# def.definitions }}
|
||||||
|
{{# def.errors }}
|
||||||
|
{{# def.setupKeyword }}
|
||||||
|
|
||||||
|
var {{=$valid}} = undefined;
|
||||||
|
|
||||||
|
{{## def.skipFormatLimit:
|
||||||
|
{{=$valid}} = true;
|
||||||
|
{{ return out; }}
|
||||||
|
#}}
|
||||||
|
|
||||||
|
{{## def.compareFormat:
|
||||||
|
{{? $isData }}
|
||||||
|
if (typeof {{=$schemaValue}} != 'string') {{=$valid}} = false;
|
||||||
|
else {
|
||||||
|
{{ $closingBraces += '}'; }}
|
||||||
|
{{?}}
|
||||||
|
|
||||||
|
{{? $isDataFormat }}
|
||||||
|
if (!{{=$compare}}) {{=$valid}} = true;
|
||||||
|
else {
|
||||||
|
{{ $closingBraces += '}'; }}
|
||||||
|
{{?}}
|
||||||
|
|
||||||
|
var {{=$result}} = {{=$compare}}({{=$data}}, {{# def.schemaValueQS }});
|
||||||
|
|
||||||
|
if ({{=$result}} === undefined) {{=$valid}} = false;
|
||||||
|
#}}
|
||||||
|
|
||||||
|
|
||||||
|
{{? it.opts.format === false }}{{# def.skipFormatLimit }}{{?}}
|
||||||
|
|
||||||
|
{{
|
||||||
|
var $schemaFormat = it.schema.format
|
||||||
|
, $isDataFormat = it.opts.v5 && $schemaFormat.$data
|
||||||
|
, $closingBraces = '';
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{? $isDataFormat }}
|
||||||
|
{{
|
||||||
|
var $schemaValueFormat = it.util.getData($schemaFormat.$data, $dataLvl, it.dataPathArr)
|
||||||
|
, $format = 'format' + $lvl
|
||||||
|
, $compare = 'compare' + $lvl;
|
||||||
|
}}
|
||||||
|
|
||||||
|
var {{=$format}} = formats[{{=$schemaValueFormat}}]
|
||||||
|
, {{=$compare}} = {{=$format}} && {{=$format}}.compare;
|
||||||
|
{{??}}
|
||||||
|
{{ var $format = it.formats[$schemaFormat]; }}
|
||||||
|
{{? !($format && $format.compare) }}
|
||||||
|
{{# def.skipFormatLimit }}
|
||||||
|
{{?}}
|
||||||
|
{{ var $compare = 'formats' + it.util.getProperty($schemaFormat) + '.compare'; }}
|
||||||
|
{{?}}
|
||||||
|
|
||||||
|
{{
|
||||||
|
var $isMax = $keyword == 'formatMaximum'
|
||||||
|
, $exclusiveKeyword = 'exclusiveFormat' + ($isMax ? 'Maximum' : 'Minimum')
|
||||||
|
, $schemaExcl = it.schema[$exclusiveKeyword]
|
||||||
|
, $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data
|
||||||
|
, $op = $isMax ? '<' : '>'
|
||||||
|
, $result = 'result' + $lvl;
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{# def.$data }}
|
||||||
|
|
||||||
|
|
||||||
|
{{? $isDataExcl }}
|
||||||
|
{{
|
||||||
|
var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr)
|
||||||
|
, $exclusive = 'exclusive' + $lvl
|
||||||
|
, $opExpr = 'op' + $lvl
|
||||||
|
, $opStr = '\' + ' + $opExpr + ' + \'';
|
||||||
|
}}
|
||||||
|
|
||||||
|
if (typeof {{=$schemaValueExcl}} != 'boolean' && typeof {{=$schemaValueExcl}} != 'undefined') {
|
||||||
|
{{=$valid}} = false;
|
||||||
|
{{ var $errorKeyword = $exclusiveKeyword; }}
|
||||||
|
{{# def.error:'_exclusiveFormatLimit' }}
|
||||||
|
}
|
||||||
|
|
||||||
|
{{# def.elseIfValid }}
|
||||||
|
|
||||||
|
{{# def.compareFormat }}
|
||||||
|
var exclusive{{=$lvl}} = {{=$schemaValueExcl}} === true;
|
||||||
|
|
||||||
|
if ({{=$valid}} === undefined) {
|
||||||
|
{{=$valid}} = exclusive{{=$lvl}}
|
||||||
|
? {{=$result}} {{=$op}} 0
|
||||||
|
: {{=$result}} {{=$op}}= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!{{=$valid}}) var op{{=$lvl}} = exclusive{{=$lvl}} ? '{{=$op}}' : '{{=$op}}=';
|
||||||
|
{{??}}
|
||||||
|
{{
|
||||||
|
var $exclusive = $schemaExcl === true
|
||||||
|
, $opStr = $op; /*used in error*/
|
||||||
|
if (!$exclusive) $opStr += '=';
|
||||||
|
var $opExpr = '\'' + $opStr + '\''; /*used in error*/
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{# def.compareFormat }}
|
||||||
|
|
||||||
|
if ({{=$valid}} === undefined)
|
||||||
|
{{=$valid}} = {{=$result}} {{=$op}}{{?!$exclusive}}={{?}} 0;
|
||||||
|
{{?}}
|
||||||
|
|
||||||
|
{{= $closingBraces }}
|
||||||
|
|
||||||
|
if (!{{=$valid}}) {
|
||||||
|
{{ var $errorKeyword = $keyword; }}
|
||||||
|
{{# def.error:'_formatLimit' }}
|
||||||
|
}
|
23
lib/v5.js
23
lib/v5.js
|
@ -15,10 +15,13 @@ function enableV5(ajv) {
|
||||||
}
|
}
|
||||||
ajv.addKeyword('constant', { inline: require('./dotjs/constant'), statements: true, errors: 'full' });
|
ajv.addKeyword('constant', { inline: require('./dotjs/constant'), statements: true, errors: 'full' });
|
||||||
ajv.addKeyword('contains', { macro: containsMacro });
|
ajv.addKeyword('contains', { macro: containsMacro });
|
||||||
ajv.addKeyword('formatMaximum', { type: 'string', inline: formatLimit, errors: false });
|
|
||||||
ajv.addKeyword('formatMinimum', { type: 'string', inline: formatLimit, errors: false });
|
var formatLimit = require('./dotjs/_formatLimit');
|
||||||
|
ajv.addKeyword('formatMaximum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' });
|
||||||
|
ajv.addKeyword('formatMinimum', { type: 'string', inline: formatLimit, statements: true, errors: 'full' });
|
||||||
ajv.addKeyword('exclusiveFormatMaximum');
|
ajv.addKeyword('exclusiveFormatMaximum');
|
||||||
ajv.addKeyword('exclusiveFormatMinimum');
|
ajv.addKeyword('exclusiveFormatMinimum');
|
||||||
|
|
||||||
ajv.addKeyword('patternGroups'); // implemented in properties.jst
|
ajv.addKeyword('patternGroups'); // implemented in properties.jst
|
||||||
ajv.addKeyword('switch', { inline: require('./dotjs/switch'), statements: true, errors: 'full' });
|
ajv.addKeyword('switch', { inline: require('./dotjs/switch'), statements: true, errors: 'full' });
|
||||||
}
|
}
|
||||||
|
@ -31,19 +34,3 @@ function containsMacro(schema) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatLimit(it, keyword, schema, parentSchema) {
|
|
||||||
var isMax = keyword == 'formatMaximum'
|
|
||||||
, operation = isMax ? '<' : '>'
|
|
||||||
, exclusiveLimit = 'exclusiveFormat' + (isMax ? 'Maximum' : 'Minimum')
|
|
||||||
, format = parentSchema.format
|
|
||||||
, compare = it.formats[format].compare;
|
|
||||||
if (!compare) return 'true';
|
|
||||||
var exclusive = parentSchema[exclusiveLimit]
|
|
||||||
, data = 'data' + (it.dataLevel || '')
|
|
||||||
, op = operation;
|
|
||||||
if (!exclusive) op += '=';
|
|
||||||
return 'formats' + it.util.getProperty(format) + '.compare('
|
|
||||||
+ data + ', ' + it.util.toQuotedString(schema)
|
|
||||||
+ ') ' + op + ' 0';
|
|
||||||
}
|
|
||||||
|
|
|
@ -399,6 +399,17 @@ describe('Custom keywords', function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should define "inline" keyword without errors', function() {
|
||||||
|
var inlineRangeTemplate = customRules.range;
|
||||||
|
|
||||||
|
testRangeKeyword({
|
||||||
|
type: 'number',
|
||||||
|
inline: inlineRangeTemplate,
|
||||||
|
statements: true,
|
||||||
|
errors: false
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should allow defining optional errors', function() {
|
it('should allow defining optional errors', function() {
|
||||||
var inlineRangeTemplate = customRules.rangeWithErrors;
|
var inlineRangeTemplate = customRules.rangeWithErrors;
|
||||||
|
|
||||||
|
|
|
@ -178,6 +178,20 @@ describe('Ajv Options', function () {
|
||||||
ajv.validate(schema, invalideDateTime) .should.equal(false);
|
ajv.validate(schema, invalideDateTime) .should.equal(false);
|
||||||
ajvFF.validate(schema, invalideDateTime) .should.equal(true);
|
ajvFF.validate(schema, invalideDateTime) .should.equal(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not validate formatMaximum/Minimum if option format == false', function() {
|
||||||
|
var ajv = Ajv({ v5: true, allErrors: true })
|
||||||
|
, ajvFF = Ajv({ v5: true, allErrors: true, format: false });
|
||||||
|
|
||||||
|
var schema = {
|
||||||
|
format: 'date',
|
||||||
|
formatMaximum: '2015-08-01'
|
||||||
|
};
|
||||||
|
|
||||||
|
var date = '2015-09-01';
|
||||||
|
ajv.validate(schema, date) .should.equal(false);
|
||||||
|
ajvFF.validate(schema, date) .should.equal(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,588 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"description": "formatMaximum in the property",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMaximum": { "$data": "1/beforeThan" }
|
||||||
|
},
|
||||||
|
"beforeThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "ignores non-strings",
|
||||||
|
"data": {
|
||||||
|
"finalDate": 2015,
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of formatMaximum is not string",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"beforeThan": 2015
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "formatMaximum in the property with exclusiveFormatMaximum",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMaximum": { "$data": "1/beforeThan" },
|
||||||
|
"exclusiveFormatMaximum": true
|
||||||
|
},
|
||||||
|
"beforeThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMaximum with format in the property",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMaximum": "2015-08-17"
|
||||||
|
},
|
||||||
|
"whenFormat": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "ignores non-strings",
|
||||||
|
"data": {
|
||||||
|
"when": 2015,
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "formatMaximum with format in the property and with exclusiveFormatMaximum",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMaximum": "2015-08-17",
|
||||||
|
"exclusiveFormatMaximum": true
|
||||||
|
},
|
||||||
|
"whenFormat": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMaximum and format in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMaximum": { "$data": "1/beforeThan" }
|
||||||
|
},
|
||||||
|
"whenFormat": {},
|
||||||
|
"beforeThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "formatMaximum and format in the properties with exclusiveFormatMaximum",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMaximum": { "$data": "1/beforeThan" },
|
||||||
|
"exclusiveFormatMaximum": true
|
||||||
|
},
|
||||||
|
"whenFormat": {},
|
||||||
|
"beforeThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "exclusiveFormatMaximum in the property",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMaximum": "2015-08-17",
|
||||||
|
"exclusiveFormatMaximum": { "$data": "1/maxIsExclusive" }
|
||||||
|
},
|
||||||
|
"maxIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"maxIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMaximum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"maxIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMaximum and exclusiveFormatMaximum in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMaximum": { "$data": "1/beforeThan" },
|
||||||
|
"exclusiveFormatMaximum": { "$data": "1/maxIsExclusive" }
|
||||||
|
},
|
||||||
|
"beforeThan": {},
|
||||||
|
"maxIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMaximum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of formatMaximum is not string",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"beforeThan": 2015,
|
||||||
|
"maxIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMaximum with format and exclusiveFormatMaximum in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMaximum": "2015-08-17",
|
||||||
|
"exclusiveFormatMaximum": { "$data": "1/maxIsExclusive" }
|
||||||
|
},
|
||||||
|
"whenFormat": {},
|
||||||
|
"maxIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"maxIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMaximum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"maxIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMaximum, format and exclusiveFormatMaximum in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMaximum": { "$data": "1/beforeThan" },
|
||||||
|
"exclusiveFormatMaximum": { "$data": "1/maxIsExclusive" }
|
||||||
|
},
|
||||||
|
"beforeThan": {},
|
||||||
|
"whenFormat": {},
|
||||||
|
"maxIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the maximum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the maximum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMaximum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"beforeThan": "2015-08-17",
|
||||||
|
"maxIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,588 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"description": "formatMinimum in the property",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMinimum": { "$data": "1/laterThan" }
|
||||||
|
},
|
||||||
|
"laterThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "ignores non-strings",
|
||||||
|
"data": {
|
||||||
|
"finalDate": 2015,
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of formatMinimum is not string",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2016-11-09",
|
||||||
|
"laterThan": 2015
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "formatMinimum in the property with exclusiveFormatMinimum",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMinimum": { "$data": "1/laterThan" },
|
||||||
|
"exclusiveFormatMinimum": true
|
||||||
|
},
|
||||||
|
"laterThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMinimum with format in the property",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMinimum": "2015-08-17"
|
||||||
|
},
|
||||||
|
"whenFormat": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "ignores non-strings",
|
||||||
|
"data": {
|
||||||
|
"when": 2015,
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "formatMinimum with format in the property and with exclusiveFormatMinimum",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMinimum": "2015-08-17",
|
||||||
|
"exclusiveFormatMinimum": true
|
||||||
|
},
|
||||||
|
"whenFormat": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMinimum and format in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMinimum": { "$data": "1/laterThan" }
|
||||||
|
},
|
||||||
|
"whenFormat": {},
|
||||||
|
"laterThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "formatMinimum and format in the properties with exclusiveFormatMinimum",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMinimum": { "$data": "1/laterThan" },
|
||||||
|
"exclusiveFormatMinimum": true
|
||||||
|
},
|
||||||
|
"whenFormat": {},
|
||||||
|
"laterThan": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "exclusiveFormatMinimum in the property",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMinimum": "2015-08-17",
|
||||||
|
"exclusiveFormatMinimum": { "$data": "1/minIsExclusive" }
|
||||||
|
},
|
||||||
|
"minIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"minIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMinimum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"minIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMinimum and exclusiveFormatMinimum in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"finalDate": {
|
||||||
|
"format": "date",
|
||||||
|
"formatMinimum": { "$data": "1/laterThan" },
|
||||||
|
"exclusiveFormatMinimum": { "$data": "1/minIsExclusive" }
|
||||||
|
},
|
||||||
|
"laterThan": {},
|
||||||
|
"minIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2014-12-03",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-08-17",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMinimum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2015-11-09",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of formatMinimum is not string",
|
||||||
|
"data": {
|
||||||
|
"finalDate": "2016-11-09",
|
||||||
|
"laterThan": 2015,
|
||||||
|
"minIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMinimum with format and exclusiveFormatMinimum in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMinimum": "2015-08-17",
|
||||||
|
"exclusiveFormatMinimum": { "$data": "1/minIsExclusive" }
|
||||||
|
},
|
||||||
|
"whenFormat": {},
|
||||||
|
"minIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"minIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMinimum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"minIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"description": "formatMinimum, format and exclusiveFormatMinimum in the properties",
|
||||||
|
"schema": {
|
||||||
|
"properties": {
|
||||||
|
"when": {
|
||||||
|
"format": { "$data": "1/whenFormat" },
|
||||||
|
"formatMinimum": { "$data": "1/laterThan" },
|
||||||
|
"exclusiveFormatMinimum": { "$data": "1/minIsExclusive" }
|
||||||
|
},
|
||||||
|
"laterThan": {},
|
||||||
|
"whenFormat": {},
|
||||||
|
"minIsExclusive": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": false
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17"
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "before the minimum date is still invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2014-12-03",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "boundary point is invalid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-08-17",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "after the minimum date is still valid",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": true
|
||||||
|
},
|
||||||
|
"valid": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "fails if value of exclusiveFormatMinimum is not boolean",
|
||||||
|
"data": {
|
||||||
|
"when": "2015-11-09",
|
||||||
|
"whenFormat": "date",
|
||||||
|
"laterThan": "2015-08-17",
|
||||||
|
"minIsExclusive": "false"
|
||||||
|
},
|
||||||
|
"valid": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
|
@ -202,5 +202,19 @@
|
||||||
"valid": true
|
"valid": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "formatMaximum is valid with unknown format",
|
||||||
|
"schema": {
|
||||||
|
"format": "unknown",
|
||||||
|
"formatMaximum": "2015"
|
||||||
|
},
|
||||||
|
"tests": [
|
||||||
|
{
|
||||||
|
"description": "always valid",
|
||||||
|
"data": "2016",
|
||||||
|
"valid": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue