From 8c52cc8aa17382ac5a47c7b16a4f96ee7a25eba0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20=C4=90oki=C4=87?= Date: Mon, 28 Mar 2016 22:43:14 +0200 Subject: [PATCH] Refactor interface names. Move interfaces into Jsen "ghost" module. Refactor tests. --- jsen/jsen-tests.ts | 71 ++++++++++++++-------------------------- jsen/jsen.d.ts | 81 +++++++++++++++++++++++++--------------------- 2 files changed, 69 insertions(+), 83 deletions(-) diff --git a/jsen/jsen-tests.ts b/jsen/jsen-tests.ts index 54dbd8ae9..9957a0120 100644 --- a/jsen/jsen-tests.ts +++ b/jsen/jsen-tests.ts @@ -1,5 +1,8 @@ /// +import jsen = require("jsen"); +import JsenSettings = Jsen.JsenSettings; + // any { // passes validation on any type @@ -372,10 +375,8 @@ { default: Math.PI } ]; - let validate: IJsenValidator; - schemas.forEach((schema) => { - validate = jsen(schema); + let validate = jsen(schema); console.assert(validate.build() === schema.default); }); } @@ -389,12 +390,9 @@ { default: new Date('05/14/2015') } ]; - let validate: IJsenValidator; - let def: any; - schemas.forEach((schema) => { - validate = jsen(schema); - def = validate.build(); + let validate = jsen(schema); + let def = validate.build(); console.assert(def !== schema.default); console.assert(JSON.stringify(def) === JSON.stringify(schema.default)); @@ -590,10 +588,8 @@ [null, {}, 'baz', false] ]; - let validate: IJsenValidator; - schemas.forEach((schema, index) => { - validate = jsen(schema); + let validate = jsen(schema); console.assert(JSON.stringify(validate.build(defaults[index])) === JSON.stringify(expected[index])); }); } @@ -1322,12 +1318,9 @@ ['b'] ]; - let validate: IJsenValidator; - let valid: boolean; - schemas.forEach((schema, index) => { - validate = jsen(schema); - valid = validate(data[index]); + let validate = jsen(schema); + let valid = validate(data[index]); console.assert(!valid); @@ -1362,12 +1355,9 @@ ['dependencies'] ]; - let validate: IJsenValidator; - let valid: boolean; - schemas.forEach((schema, index) => { - validate = jsen(schema); - valid = validate(data[index]); + let validate = jsen(schema); + let valid = validate(data[index]); console.assert(!valid); @@ -1560,13 +1550,10 @@ 'c is invalid' ]; - let validate: IJsenValidator; - let valid: boolean; - schemas.forEach((schema, index) => { //it(expectedMessages[index], function () { - validate = jsen(schema); - valid = validate(data[index]); + let validate = jsen(schema); + let valid = validate(data[index]); console.assert(!valid); console.assert(validate.errors.length === 1); @@ -1764,13 +1751,9 @@ schemas[24].messages.not ]; - let validate: IJsenValidator; - let valid: boolean; - schemas.forEach((schema: any, index: number) => { - validate = jsen(schema); - - valid = validate(data[index]); + let validate = jsen(schema); + let valid = validate(data[index]); console.assert(!valid); console.assert(validate.errors[validate.errors.length - 1].message === expectedMessages[index]); @@ -1971,14 +1954,11 @@ const doesNotThrow = (func: Function) => { } }; - let validate: IJsenValidator; - console.assert(doesNotThrow(() => { - validate = jsen(schema); + let validate = jsen(schema); + console.assert(validate({ 123: true })); }) ); - - console.assert(validate({ 123: true })); } // Fix cannot dereference schema when ids change resolution scope (#14) @@ -1993,15 +1973,14 @@ const doesNotThrow = (func: Function) => { } }; - let validate: IJsenValidator; - console.assert(doesNotThrow(() => { - validate = jsen(schema); + let validate = jsen(schema); + + console.assert(validate('abc')); + console.assert(!validate(123)); }) ); - console.assert(validate('abc')); - console.assert(!validate(123)); schema = { $ref: '#child/definitions/subchild', @@ -2018,7 +1997,7 @@ const doesNotThrow = (func: Function) => { }; console.assert(doesThrow(() => { - validate = jsen(schema); + let validate = jsen(schema); }) ); } @@ -2261,7 +2240,7 @@ const doesNotThrow = (func: Function) => { { let schema = { format: 'custom' }, callCount = 0, - options = { + options = { formats: { custom: () => { callCount++; @@ -2298,7 +2277,7 @@ const doesNotThrow = (func: Function) => { maximum: 10 }, callCount = 0, - options = { + options = { formats: { custom: () => { callCount++; @@ -2334,7 +2313,7 @@ const doesNotThrow = (func: Function) => { }, format: 'passwordsMatch' }, - options = { + options = { formats: { passwordsMatch: (obj: any) => { callCount++; diff --git a/jsen/jsen.d.ts b/jsen/jsen.d.ts index e230818b8..19407c849 100644 --- a/jsen/jsen.d.ts +++ b/jsen/jsen.d.ts @@ -3,43 +3,50 @@ // Definitions by: Vladimir Đokić // Definitions: https://github.com/borisyankov/DefinitelyTyped -interface IJsenFormats { - [key: string]: string | RegExp | Function; +declare module Jsen { + + export interface JsenFormats { + [key: string]: string | RegExp | Function; + } + + export interface JsenSettings { + missing$Ref?: boolean; + greedy?: boolean; + formats?: JsenFormats; + schemas?: any; + } + + export interface JsenBuildSettings { + copy?: boolean; + additionalProperties?: boolean; + } + + export interface JsenValidator { + (data?: any): boolean; + build(initial?: any, options?: JsenBuildSettings): any; + errors: JsenValidateError[]; + } + + export interface JsenValidateError { + path: string; + keyword: string; + message?: string; + } + + export interface JsenUnique { + (array: any[]): boolean; + findIndex(array: any[], value: any, comparator: (obj1: any, obj2: any) => boolean): number; + } + + export interface JsenMain { + (schema?: any, options?: JsenSettings): JsenValidator; + clone(data: any): any; + equal(a: any, b: any): boolean; + unique: JsenUnique; + } } -interface IJsenSettings { - missing$Ref?: boolean; - greedy?: boolean; - formats?: IJsenFormats; - schemas?: any; +declare module "jsen" { + var _jsen: Jsen.JsenMain; + export = _jsen; } - -interface IJsenBuildSettings { - copy?: boolean; - additionalProperties?: boolean; -} - -interface IJsenValidator { - (data?: any): boolean; - build(initial?: any, options?: IJsenBuildSettings): any; - errors: IValidateError[]; -} - -interface IValidateError { - path: string; - keyword: string; - message?: string; -} - -interface IJsenUnique { - (array: any[]): boolean; - findIndex(array: any[], value: any, comparator: (obj1: any, obj2: any) => boolean): number; -} -interface IJsen { - (schema?: any, options?: IJsenSettings): IJsenValidator; - clone(data: any): any; - equal(a: any, b: any): boolean; - unique: IJsenUnique; -} - -declare var jsen: IJsen;