diff options
Diffstat (limited to 'test/json-schema.test.js')
| -rw-r--r-- | test/json-schema.test.js | 466 | 
1 files changed, 233 insertions, 233 deletions
diff --git a/test/json-schema.test.js b/test/json-schema.test.js index dba14c54..0b17e7ce 100644 --- a/test/json-schema.test.js +++ b/test/json-schema.test.js @@ -53,28 +53,28 @@ describe('JsonSchema', () => {          const schema = {              allOf: [                  { -                    type: 'number' +                    type: 'number',                  },                  {                      anyOf: [                          {minimum: 10, maximum: 100}, -                        {minimum: -100, maximum: -10} -                    ] +                        {minimum: -100, maximum: -10}, +                    ],                  },                  {                      oneOf: [                          {multipleOf: 3}, -                        {multipleOf: 5} -                    ] +                        {multipleOf: 5}, +                    ],                  },                  {                      not: {                          anyOf: [ -                            {multipleOf: 20} -                        ] -                    } -                } -            ] +                            {multipleOf: 20}, +                        ], +                    }, +                }, +            ],          };          /** @@ -115,7 +115,7 @@ describe('JsonSchema', () => {              // String tests              {                  schema: { -                    type: 'string' +                    type: 'string',                  },                  inputs: [                      {expected: false, value: null}, @@ -123,97 +123,97 @@ describe('JsonSchema', () => {                      {expected: false, value: 0},                      {expected: false, value: {}},                      {expected: false, value: []}, -                    {expected: true,  value: ''} -                ] +                    {expected: true,  value: ''}, +                ],              },              {                  schema: {                      type: 'string', -                    minLength: 2 +                    minLength: 2,                  },                  inputs: [                      {expected: false, value: ''},                      {expected: false,  value: '1'},                      {expected: true,  value: '12'}, -                    {expected: true,  value: '123'} -                ] +                    {expected: true,  value: '123'}, +                ],              },              {                  schema: {                      type: 'string', -                    maxLength: 2 +                    maxLength: 2,                  },                  inputs: [                      {expected: true,  value: ''},                      {expected: true,  value: '1'},                      {expected: true,  value: '12'}, -                    {expected: false, value: '123'} -                ] +                    {expected: false, value: '123'}, +                ],              },              {                  schema: {                      type: 'string', -                    pattern: 'test' +                    pattern: 'test',                  },                  inputs: [                      {expected: false, value: ''},                      {expected: true,  value: 'test'},                      {expected: false, value: 'TEST'},                      {expected: true,  value: 'ABCtestDEF'}, -                    {expected: false, value: 'ABCTESTDEF'} -                ] +                    {expected: false, value: 'ABCTESTDEF'}, +                ],              },              {                  schema: {                      type: 'string', -                    pattern: '^test$' +                    pattern: '^test$',                  },                  inputs: [                      {expected: false, value: ''},                      {expected: true,  value: 'test'},                      {expected: false, value: 'TEST'},                      {expected: false, value: 'ABCtestDEF'}, -                    {expected: false, value: 'ABCTESTDEF'} -                ] +                    {expected: false, value: 'ABCTESTDEF'}, +                ],              },              {                  schema: {                      type: 'string',                      pattern: '^test$', -                    patternFlags: 'i' +                    patternFlags: 'i',                  },                  inputs: [                      {expected: false, value: ''},                      {expected: true,  value: 'test'},                      {expected: true,  value: 'TEST'},                      {expected: false, value: 'ABCtestDEF'}, -                    {expected: false, value: 'ABCTESTDEF'} -                ] +                    {expected: false, value: 'ABCTESTDEF'}, +                ],              },              {                  schema: {                      type: 'string', -                    pattern: '*' +                    pattern: '*',                  },                  inputs: [ -                    {expected: false, value: ''} -                ] +                    {expected: false, value: ''}, +                ],              },              {                  schema: {                      type: 'string',                      pattern: '.', -                    patternFlags: '?' +                    patternFlags: '?',                  },                  inputs: [ -                    {expected: false, value: ''} -                ] +                    {expected: false, value: ''}, +                ],              },              // Const tests              {                  schema: { -                    const: 32 +                    const: 32,                  },                  inputs: [                      {expected: true,  value: 32}, @@ -221,12 +221,12 @@ describe('JsonSchema', () => {                      {expected: false, value: '32'},                      {expected: false, value: null},                      {expected: false, value: {a: 'b'}}, -                    {expected: false, value: [1, 2, 3]} -                ] +                    {expected: false, value: [1, 2, 3]}, +                ],              },              {                  schema: { -                    const: '32' +                    const: '32',                  },                  inputs: [                      {expected: false, value: 32}, @@ -234,12 +234,12 @@ describe('JsonSchema', () => {                      {expected: true,  value: '32'},                      {expected: false, value: null},                      {expected: false, value: {a: 'b'}}, -                    {expected: false, value: [1, 2, 3]} -                ] +                    {expected: false, value: [1, 2, 3]}, +                ],              },              {                  schema: { -                    const: null +                    const: null,                  },                  inputs: [                      {expected: false, value: 32}, @@ -247,12 +247,12 @@ describe('JsonSchema', () => {                      {expected: false, value: '32'},                      {expected: true,  value: null},                      {expected: false, value: {a: 'b'}}, -                    {expected: false, value: [1, 2, 3]} -                ] +                    {expected: false, value: [1, 2, 3]}, +                ],              },              {                  schema: { -                    const: {a: 'b'} +                    const: {a: 'b'},                  },                  inputs: [                      {expected: false, value: 32}, @@ -260,12 +260,12 @@ describe('JsonSchema', () => {                      {expected: false, value: '32'},                      {expected: false, value: null},                      {expected: false, value: {a: 'b'}}, -                    {expected: false, value: [1, 2, 3]} -                ] +                    {expected: false, value: [1, 2, 3]}, +                ],              },              {                  schema: { -                    const: [1, 2, 3] +                    const: [1, 2, 3],                  },                  inputs: [                      {expected: false, value: 32}, @@ -273,15 +273,15 @@ describe('JsonSchema', () => {                      {expected: false,  value: '32'},                      {expected: false, value: null},                      {expected: false, value: {a: 'b'}}, -                    {expected: false, value: [1, 2, 3]} -                ] +                    {expected: false, value: [1, 2, 3]}, +                ],              },              // Array contains tests              {                  schema: {                      type: 'array', -                    contains: {const: 32} +                    contains: {const: 32},                  },                  inputs: [                      {expected: false, value: []}, @@ -290,119 +290,119 @@ describe('JsonSchema', () => {                      {expected: true,  value: [1, 32, 1]},                      {expected: false, value: [33]},                      {expected: false, value: [1, 33]}, -                    {expected: false, value: [1, 33, 1]} -                ] +                    {expected: false, value: [1, 33, 1]}, +                ],              },              // Number limits tests              {                  schema: {                      type: 'number', -                    minimum: 0 +                    minimum: 0,                  },                  inputs: [                      {expected: false, value: -1},                      {expected: true,  value: 0}, -                    {expected: true,  value: 1} -                ] +                    {expected: true,  value: 1}, +                ],              },              {                  schema: {                      type: 'number', -                    exclusiveMinimum: 0 +                    exclusiveMinimum: 0,                  },                  inputs: [                      {expected: false, value: -1},                      {expected: false, value: 0}, -                    {expected: true,  value: 1} -                ] +                    {expected: true,  value: 1}, +                ],              },              {                  schema: {                      type: 'number', -                    maximum: 0 +                    maximum: 0,                  },                  inputs: [                      {expected: true,  value: -1},                      {expected: true,  value: 0}, -                    {expected: false, value: 1} -                ] +                    {expected: false, value: 1}, +                ],              },              {                  schema: {                      type: 'number', -                    exclusiveMaximum: 0 +                    exclusiveMaximum: 0,                  },                  inputs: [                      {expected: true,  value: -1},                      {expected: false, value: 0}, -                    {expected: false, value: 1} -                ] +                    {expected: false, value: 1}, +                ],              },              // Integer limits tests              {                  schema: {                      type: 'integer', -                    minimum: 0 +                    minimum: 0,                  },                  inputs: [                      {expected: false, value: -1},                      {expected: true,  value: 0}, -                    {expected: true,  value: 1} -                ] +                    {expected: true,  value: 1}, +                ],              },              {                  schema: {                      type: 'integer', -                    exclusiveMinimum: 0 +                    exclusiveMinimum: 0,                  },                  inputs: [                      {expected: false, value: -1},                      {expected: false, value: 0}, -                    {expected: true,  value: 1} -                ] +                    {expected: true,  value: 1}, +                ],              },              {                  schema: {                      type: 'integer', -                    maximum: 0 +                    maximum: 0,                  },                  inputs: [                      {expected: true,  value: -1},                      {expected: true,  value: 0}, -                    {expected: false, value: 1} -                ] +                    {expected: false, value: 1}, +                ],              },              {                  schema: {                      type: 'integer', -                    exclusiveMaximum: 0 +                    exclusiveMaximum: 0,                  },                  inputs: [                      {expected: true,  value: -1},                      {expected: false, value: 0}, -                    {expected: false, value: 1} -                ] +                    {expected: false, value: 1}, +                ],              },              {                  schema: {                      type: 'integer', -                    multipleOf: 2 +                    multipleOf: 2,                  },                  inputs: [                      {expected: true,  value: -2},                      {expected: false, value: -1},                      {expected: true,  value: 0},                      {expected: false, value: 1}, -                    {expected: true,  value: 2} -                ] +                    {expected: true,  value: 2}, +                ],              },              // Numeric type tests              {                  schema: { -                    type: 'number' +                    type: 'number',                  },                  inputs: [                      {expected: true,  value: 0}, @@ -411,12 +411,12 @@ describe('JsonSchema', () => {                      {expected: false, value: '0'},                      {expected: false, value: null},                      {expected: false, value: []}, -                    {expected: false, value: {}} -                ] +                    {expected: false, value: {}}, +                ],              },              {                  schema: { -                    type: 'integer' +                    type: 'integer',                  },                  inputs: [                      {expected: true,  value: 0}, @@ -425,8 +425,8 @@ describe('JsonSchema', () => {                      {expected: false, value: '0'},                      {expected: false, value: null},                      {expected: false, value: []}, -                    {expected: false, value: {}} -                ] +                    {expected: false, value: {}}, +                ],              },              // Reference tests @@ -434,10 +434,10 @@ describe('JsonSchema', () => {                  schema: {                      definitions: {                          example: { -                            type: 'number' -                        } +                            type: 'number', +                        },                      }, -                    $ref: '#/definitions/example' +                    $ref: '#/definitions/example',                  },                  inputs: [                      {expected: true,  value: 0}, @@ -446,17 +446,17 @@ describe('JsonSchema', () => {                      {expected: false, value: '0'},                      {expected: false, value: null},                      {expected: false, value: []}, -                    {expected: false, value: {}} -                ] +                    {expected: false, value: {}}, +                ],              },              {                  schema: {                      definitions: {                          example: { -                            type: 'integer' -                        } +                            type: 'integer', +                        },                      }, -                    $ref: '#/definitions/example' +                    $ref: '#/definitions/example',                  },                  inputs: [                      {expected: true,  value: 0}, @@ -465,8 +465,8 @@ describe('JsonSchema', () => {                      {expected: false, value: '0'},                      {expected: false, value: null},                      {expected: false, value: []}, -                    {expected: false, value: {}} -                ] +                    {expected: false, value: {}}, +                ],              },              {                  schema: { @@ -476,12 +476,12 @@ describe('JsonSchema', () => {                              additionalProperties: false,                              properties: {                                  test: { -                                    $ref: '#/definitions/example' -                                } -                            } -                        } +                                    $ref: '#/definitions/example', +                                }, +                            }, +                        },                      }, -                    $ref: '#/definitions/example' +                    $ref: '#/definitions/example',                  },                  inputs: [                      {expected: false, value: 0}, @@ -499,9 +499,9 @@ describe('JsonSchema', () => {                      {expected: false, value: {test: []}},                      {expected: true,  value: {test: {}}},                      {expected: true,  value: {test: {test: {}}}}, -                    {expected: true,  value: {test: {test: {test: {}}}}} -                ] -            } +                    {expected: true,  value: {test: {test: {test: {}}}}}, +                ], +            },          ];          /* eslint-enable @stylistic/no-multi-spaces */ @@ -524,49 +524,49 @@ describe('JsonSchema', () => {                      properties: {                          test: {                              type: 'string', -                            default: 'default' -                        } +                            default: 'default', +                        },                      }, -                    additionalProperties: false +                    additionalProperties: false,                  },                  inputs: [                      [                          void 0, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          null, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          0, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          '', -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          [], -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          {}, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          {test: 'value'}, -                        {test: 'value'} +                        {test: 'value'},                      ],                      [                          {test2: 'value2'}, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          {test: 'value', test2: 'value2'}, -                        {test: 'value'} -                    ] -                ] +                        {test: 'value'}, +                    ], +                ],              },              // Test value defaulting on objects with additionalProperties=true @@ -577,29 +577,29 @@ describe('JsonSchema', () => {                      properties: {                          test: {                              type: 'string', -                            default: 'default' -                        } +                            default: 'default', +                        },                      }, -                    additionalProperties: true +                    additionalProperties: true,                  },                  inputs: [                      [                          {}, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          {test: 'value'}, -                        {test: 'value'} +                        {test: 'value'},                      ],                      [                          {test2: 'value2'}, -                        {test: 'default', test2: 'value2'} +                        {test: 'default', test2: 'value2'},                      ],                      [                          {test: 'value', test2: 'value2'}, -                        {test: 'value', test2: 'value2'} -                    ] -                ] +                        {test: 'value', test2: 'value2'}, +                    ], +                ],              },              // Test value defaulting on objects with additionalProperties={schema} @@ -610,48 +610,48 @@ describe('JsonSchema', () => {                      properties: {                          test: {                              type: 'string', -                            default: 'default' -                        } +                            default: 'default', +                        },                      },                      additionalProperties: {                          type: 'number', -                        default: 10 -                    } +                        default: 10, +                    },                  },                  inputs: [                      [                          {}, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          {test: 'value'}, -                        {test: 'value'} +                        {test: 'value'},                      ],                      [                          {test2: 'value2'}, -                        {test: 'default', test2: 10} +                        {test: 'default', test2: 10},                      ],                      [                          {test: 'value', test2: 'value2'}, -                        {test: 'value', test2: 10} +                        {test: 'value', test2: 10},                      ],                      [                          {test2: 2}, -                        {test: 'default', test2: 2} +                        {test: 'default', test2: 2},                      ],                      [                          {test: 'value', test2: 2}, -                        {test: 'value', test2: 2} +                        {test: 'value', test2: 2},                      ],                      [                          {test: 'value', test2: 2, test3: null}, -                        {test: 'value', test2: 2, test3: 10} +                        {test: 'value', test2: 2, test3: 10},                      ],                      [                          {test: 'value', test2: 2, test3: void 0}, -                        {test: 'value', test2: 2, test3: 10} -                    ] -                ] +                        {test: 'value', test2: 2, test3: 10}, +                    ], +                ],              },              // Test value defaulting where hasOwnProperty is false @@ -662,24 +662,24 @@ describe('JsonSchema', () => {                      properties: {                          test: {                              type: 'string', -                            default: 'default' -                        } -                    } +                            default: 'default', +                        }, +                    },                  },                  inputs: [                      [                          {}, -                        {test: 'default'} +                        {test: 'default'},                      ],                      [                          {test: 'value'}, -                        {test: 'value'} +                        {test: 'value'},                      ],                      [                          Object.create({test: 'value'}), -                        {test: 'default'} -                    ] -                ] +                        {test: 'default'}, +                    ], +                ],              },              {                  schema: { @@ -688,24 +688,24 @@ describe('JsonSchema', () => {                      properties: {                          toString: /** @type {import('ext/json-schema').SchemaObject} */ ({                              type: 'string', -                            default: 'default' -                        }) -                    } +                            default: 'default', +                        }), +                    },                  },                  inputs: [                      [                          {}, -                        {toString: 'default'} +                        {toString: 'default'},                      ],                      [                          {toString: 'value'}, -                        {toString: 'value'} +                        {toString: 'value'},                      ],                      [                          Object.create({toString: 'value'}), -                        {toString: 'default'} -                    ] -                ] +                        {toString: 'default'}, +                    ], +                ],              },              // Test enum @@ -717,28 +717,28 @@ describe('JsonSchema', () => {                          test: {                              type: 'string',                              default: 'value1', -                            enum: ['value1', 'value2', 'value3'] -                        } -                    } +                            enum: ['value1', 'value2', 'value3'], +                        }, +                    },                  },                  inputs: [                      [                          {test: 'value1'}, -                        {test: 'value1'} +                        {test: 'value1'},                      ],                      [                          {test: 'value2'}, -                        {test: 'value2'} +                        {test: 'value2'},                      ],                      [                          {test: 'value3'}, -                        {test: 'value3'} +                        {test: 'value3'},                      ],                      [                          {test: 'value4'}, -                        {test: 'value1'} -                    ] -                ] +                        {test: 'value1'}, +                    ], +                ],              },              // Test valid vs invalid default @@ -750,16 +750,16 @@ describe('JsonSchema', () => {                          test: {                              type: 'integer',                              default: 2, -                            minimum: 1 -                        } -                    } +                            minimum: 1, +                        }, +                    },                  },                  inputs: [                      [                          {test: -1}, -                        {test: 2} -                    ] -                ] +                        {test: 2}, +                    ], +                ],              },              {                  schema: { @@ -769,16 +769,16 @@ describe('JsonSchema', () => {                          test: {                              type: 'integer',                              default: 1, -                            minimum: 2 -                        } -                    } +                            minimum: 2, +                        }, +                    },                  },                  inputs: [                      [                          {test: -1}, -                        {test: -1} -                    ] -                ] +                        {test: -1}, +                    ], +                ],              },              // Test references @@ -787,29 +787,29 @@ describe('JsonSchema', () => {                      definitions: {                          example: {                              type: 'number', -                            default: 0 -                        } +                            default: 0, +                        },                      }, -                    $ref: '#/definitions/example' +                    $ref: '#/definitions/example',                  },                  inputs: [                      [                          1, -                        1 +                        1,                      ],                      [                          null, -                        0 +                        0,                      ],                      [                          'test', -                        0 +                        0,                      ],                      [                          {test: 'value'}, -                        0 -                    ] -                ] +                        0, +                    ], +                ],              },              {                  schema: { @@ -819,44 +819,44 @@ describe('JsonSchema', () => {                              additionalProperties: false,                              properties: {                                  test: { -                                    $ref: '#/definitions/example' -                                } -                            } -                        } +                                    $ref: '#/definitions/example', +                                }, +                            }, +                        },                      }, -                    $ref: '#/definitions/example' +                    $ref: '#/definitions/example',                  },                  inputs: [                      [                          1, -                        {} +                        {},                      ],                      [                          null, -                        {} +                        {},                      ],                      [                          'test', -                        {} +                        {},                      ],                      [                          {}, -                        {} +                        {},                      ],                      [                          {test: {}}, -                        {test: {}} +                        {test: {}},                      ],                      [                          {test: 'value'}, -                        {test: {}} +                        {test: {}},                      ],                      [                          {test: {test: {}}}, -                        {test: {test: {}}} -                    ] -                ] -            } +                        {test: {test: {}}}, +                    ], +                ], +            },          ];          describe.each(data)('Schema %#', ({schema, inputs}) => { @@ -880,17 +880,17 @@ describe('JsonSchema', () => {                      properties: {                          test: {                              type: 'string', -                            default: 'default' -                        } -                    } +                            default: 'default', +                        }, +                    },                  },                  tests: [                      {error: false, value: {test: 'default'}, action: (value) => { value.test = 'string'; }},                      {error: true,  value: {test: 'default'}, action: (value) => { value.test = null; }},                      {error: true,  value: {test: 'default'}, action: (value) => { delete value.test; }},                      {error: true,  value: {test: 'default'}, action: (value) => { value.test2 = 'string'; }}, -                    {error: false, value: {test: 'default'}, action: (value) => { delete value.test2; }} -                ] +                    {error: false, value: {test: 'default'}, action: (value) => { delete value.test2; }}, +                ],              },              {                  schema: { @@ -900,17 +900,17 @@ describe('JsonSchema', () => {                      properties: {                          test: {                              type: 'string', -                            default: 'default' -                        } -                    } +                            default: 'default', +                        }, +                    },                  },                  tests: [                      {error: false, value: {test: 'default'}, action: (value) => { value.test = 'string'; }},                      {error: true,  value: {test: 'default'}, action: (value) => { value.test = null; }},                      {error: true,  value: {test: 'default'}, action: (value) => { delete value.test; }},                      {error: false, value: {test: 'default'}, action: (value) => { value.test2 = 'string'; }}, -                    {error: false, value: {test: 'default'}, action: (value) => { delete value.test2; }} -                ] +                    {error: false, value: {test: 'default'}, action: (value) => { delete value.test2; }}, +                ],              },              {                  schema: { @@ -930,13 +930,13 @@ describe('JsonSchema', () => {                                      properties: {                                          test3: {                                              type: 'string', -                                            default: 'default' -                                        } -                                    } -                                } -                            } -                        } -                    } +                                            default: 'default', +                                        }, +                                    }, +                                }, +                            }, +                        }, +                    },                  },                  tests: [                      {error: false, action: (value) => { value.test1.test2.test3 = 'string'; }}, @@ -945,8 +945,8 @@ describe('JsonSchema', () => {                      {error: true,  action: (value) => { value.test1.test2 = null; }},                      {error: true,  action: (value) => { value.test1 = null; }},                      {error: true,  action: (value) => { value.test4 = 'string'; }}, -                    {error: false, action: (value) => { delete value.test4; }} -                ] +                    {error: false, action: (value) => { delete value.test4; }}, +                ],              },              // Array tests @@ -955,8 +955,8 @@ describe('JsonSchema', () => {                      type: 'array',                      items: {                          type: 'string', -                        default: 'default' -                    } +                        default: 'default', +                    },                  },                  tests: [                      {error: false, value: ['default'], action: (value) => { value[0] = 'string'; }}, @@ -970,9 +970,9 @@ describe('JsonSchema', () => {                              value[1] = 'string';                              if (value.length !== 2) { throw new Error(`Invalid length; expected=2; actual=${value.length}`); }                              if (typeof value.push !== 'function') { throw new Error(`Invalid push; expected=function; actual=${typeof value.push}`); } -                        } -                    } -                ] +                        }, +                    }, +                ],              },              // Reference tests @@ -984,12 +984,12 @@ describe('JsonSchema', () => {                              additionalProperties: false,                              properties: {                                  test: { -                                    $ref: '#/definitions/example' -                                } -                            } -                        } +                                    $ref: '#/definitions/example', +                                }, +                            }, +                        },                      }, -                    $ref: '#/definitions/example' +                    $ref: '#/definitions/example',                  },                  tests: [                      {error: false, value: {}, action: (value) => { value.test = {}; }}, @@ -998,9 +998,9 @@ describe('JsonSchema', () => {                      {error: true,  value: {}, action: (value) => { value.test = null; }},                      {error: true,  value: {}, action: (value) => { value.test = 'string'; }},                      {error: true,  value: {}, action: (value) => { value.test = {}; value.test.test = 'string'; }}, -                    {error: true,  value: {}, action: (value) => { value.test = {test: 'string'}; }} -                ] -            } +                    {error: true,  value: {}, action: (value) => { value.test = {test: 'string'}; }}, +                ], +            },          ];          /* eslint-enable @stylistic/no-multi-spaces */  |