diff options
| author | Darius Jahandarie <djahandarie@gmail.com> | 2023-12-06 03:53:16 +0000 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-06 03:53:16 +0000 | 
| commit | bd5bc1a5db29903bc098995cd9262c4576bf76af (patch) | |
| tree | c9214189e0214480fcf6539ad1c6327aef6cbd1c /test/json-schema.test.js | |
| parent | fd6bba8a2a869eaf2b2c1fa49001f933fce3c618 (diff) | |
| parent | 23e6fb76319c9ed7c9bcdc3efba39bc5dd38f288 (diff) | |
Merge pull request #339 from toasted-nutbread/type-annotations
Type annotations
Diffstat (limited to 'test/json-schema.test.js')
| -rw-r--r-- | test/json-schema.test.js | 71 | 
1 files changed, 53 insertions, 18 deletions
| diff --git a/test/json-schema.test.js b/test/json-schema.test.js index 5370e8da..e534f538 100644 --- a/test/json-schema.test.js +++ b/test/json-schema.test.js @@ -19,25 +19,47 @@  import {expect, test} from 'vitest';  import {JsonSchema} from '../ext/js/data/json-schema.js'; +/** + * @param {import('json-schema').Schema} schema + * @param {unknown} value + * @returns {boolean} + */  function schemaValidate(schema, value) {      return new JsonSchema(schema).isValid(value);  } +/** + * @param {import('json-schema').Schema} schema + * @param {unknown} value + * @returns {import('json-schema').Value} + */  function getValidValueOrDefault(schema, value) {      return new JsonSchema(schema).getValidValueOrDefault(value);  } +/** + * @param {import('json-schema').Schema} schema + * @param {import('json-schema').Value} value + * @returns {import('json-schema').Value} + */  function createProxy(schema, value) {      return new JsonSchema(schema).createProxy(value);  } +/** + * @template T + * @param {T} value + * @returns {T} + */  function clone(value) {      return JSON.parse(JSON.stringify(value));  } +/** */  function testValidate1() {      test('Validate1', () => { +        /** @type {import('json-schema').Schema} */          const schema = {              allOf: [                  { @@ -56,28 +78,34 @@ function testValidate1() {                      ]                  },                  { -                    not: [ -                        {multipleOf: 20} -                    ] +                    not: { +                        anyOf: [ +                            {multipleOf: 20} +                        ] +                    }                  }              ]          }; +        /** +         * @param {number} value +         * @returns {boolean} +         */          const jsValidate = (value) => {              return (                  typeof value === 'number' && -            ( -                (value >= 10 && value <= 100) || -                (value >= -100 && value <= -10) -            ) && -            (                  ( -                    (value % 3) === 0 || -                    (value % 5) === 0 +                    (value >= 10 && value <= 100) || +                    (value >= -100 && value <= -10) +                ) && +                ( +                    ( +                        (value % 3) === 0 || +                        (value % 5) === 0 +                    ) && +                    (value % 15) !== 0                  ) && -                (value % 15) !== 0 -            ) && -            (value % 20) !== 0 +                (value % 20) !== 0              );          }; @@ -89,10 +117,12 @@ function testValidate1() {      });  } +/** */  function testValidate2() {      test('Validate2', () => { +        /** @type {{schema: import('json-schema').Schema, inputs: {expected: boolean, value: unknown}[]}[]} */          const data = [ -        // String tests +            // String tests              {                  schema: {                      type: 'string' @@ -494,10 +524,12 @@ function testValidate2() {  } +/** */  function testGetValidValueOrDefault1() {      test('GetValidValueOrDefault1', () => { +        /** @type {{schema: import('json-schema').Schema, inputs: [value: unknown, expected: unknown][]}[]} */          const data = [ -        // Test value defaulting on objects with additionalProperties=false +            // Test value defaulting on objects with additionalProperties=false              {                  schema: {                      type: 'object', @@ -667,10 +699,10 @@ function testGetValidValueOrDefault1() {                      type: 'object',                      required: ['toString'],                      properties: { -                        toString: { +                        toString: /** @type {import('json-schema').SchemaObject} */ ({                              type: 'string',                              default: 'default' -                        } +                        })                      }                  },                  inputs: [ @@ -850,10 +882,12 @@ function testGetValidValueOrDefault1() {  } +/** */  function testProxy1() {      test('Proxy1', () => { +        /** @type {{schema: import('json-schema').Schema, tests: {error: boolean, value?: import('json-schema').Value, action: (value: import('core').SafeAny) => void}[]}[]} */          const data = [ -        // Object tests +            // Object tests              {                  schema: {                      type: 'object', @@ -998,6 +1032,7 @@ function testProxy1() {  } +/** */  function main() {      testValidate1();      testValidate2(); |