diff --git a/package-lock.json b/package-lock.json index 476ef56..c75c506 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "not-me", - "version": "4.3.3", + "version": "4.3.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 1b46c54..33914a9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "not-me", - "version": "4.3.4", + "version": "4.3.5", "description": "Easy and type-safe validation", "main": "lib/index.js", "types": "lib/types.d.ts", diff --git a/src/schemas/number/number-schema.spec.ts b/src/schemas/number/number-schema.spec.ts index feb5839..fab8c07 100644 --- a/src/schemas/number/number-schema.spec.ts +++ b/src/schemas/number/number-schema.spec.ts @@ -19,4 +19,13 @@ describe("Number Schema", () => { value: 123.3, }); }); + + it("Let undefined pass an integer check, if number is not required", () => { + const schema: Schema = number().integer(); + + expect(schema.validate(undefined)).toEqual({ + errors: false, + value: undefined, + }); + }); }); diff --git a/src/schemas/number/number-schema.ts b/src/schemas/number/number-schema.ts index 5562f1b..a4565e9 100644 --- a/src/schemas/number/number-schema.ts +++ b/src/schemas/number/number-schema.ts @@ -38,14 +38,18 @@ class NumberSchemaImpl<_Output = number | undefined | null> extends BaseSchema< } integer(message?: string): this { - this.test((input) => - Number.isInteger(input) - ? null - : message || - DefaultErrorMessagesManager.getDefaultMessages().number - ?.isNotInteger || - "Input must be an integer" - ); + this.test((input) => { + if (input == null) { + return null; + } else { + return Number.isInteger(input) + ? null + : message || + DefaultErrorMessagesManager.getDefaultMessages().number + ?.isNotInteger || + "Input must be an integer"; + } + }); return this; }