diff --git a/README.md b/README.md index b091250b..be645bfd 100644 --- a/README.md +++ b/README.md @@ -1199,6 +1199,8 @@ string[] #### valid +Checks if the given date is valid. + ##### Type signature diff --git a/date/README.md b/date/README.md index 97da2b05..94394377 100644 --- a/date/README.md +++ b/date/README.md @@ -460,6 +460,8 @@ string[] # valid +Checks if the given date is valid. + ## Type signature diff --git a/date/valid.js b/date/valid.js index 1e1ee749..462c0e7a 100644 --- a/date/valid.js +++ b/date/valid.js @@ -1 +1,2 @@ -export default date => (date ? date instanceof Date : false); +export default date => + date ? date instanceof Date && !Number.isNaN(date.valueOf()) : false; diff --git a/date/valid.json b/date/valid.json index 314fe758..02fe8164 100644 --- a/date/valid.json +++ b/date/valid.json @@ -1,6 +1,6 @@ { "name": "valid", - "description": "TODO: Fill short description here.", + "description": "Checks if the given date is valid.", "signature": "(date?: any) => boolean", "examples": [ { diff --git a/date/valid.md b/date/valid.md index 014ebdd5..7f15ec4e 100644 --- a/date/valid.md +++ b/date/valid.md @@ -1,5 +1,7 @@ # valid +Checks if the given date is valid. + ## Type signature diff --git a/date/valid.test.ts b/date/valid.test.ts index 351544ad..1c2c7ec5 100644 --- a/date/valid.test.ts +++ b/date/valid.test.ts @@ -3,7 +3,22 @@ import valid from "./valid.ts"; describe("valid", () => { - it.skip("TODO", () => { - expect(valid()).toBeDefined(); + it("checks if the given date is valid", () => { + expect(valid(new Date())).toBe(true); + expect(valid(new Date("2020-01-31T09:52:31.618Z"))).toBe(true); + }); + + it("should reject Invalid Date objects", () => { + expect(valid(new Date("test"))).toBe(false); + expect(valid(new Date("77724e10-2ffa-45cc-b05d-a91a846a6080"))).toBe(false); + }); + + it("handles missing and falsy values", () => { + expect(valid(undefined)).toBe(false); + expect(valid(null)).toBe(false); + expect(valid(false)).toBe(false); + expect(valid(0)).toBe(false); + expect(valid(NaN)).toBe(false); + expect(valid("")).toBe(false); }); }); diff --git a/date/valid.ts b/date/valid.ts index 0f82e166..3d576856 100644 --- a/date/valid.ts +++ b/date/valid.ts @@ -1 +1,2 @@ -export default (date?: any): boolean => (date ? date instanceof Date : false); +export default (date?: any): boolean => + date ? date instanceof Date && !Number.isNaN(date.valueOf()) : false;