From a5181ae114af17905318a480986a9c79aa7e02e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Zalewski?= Date: Wed, 5 Feb 2020 10:32:32 +0100 Subject: [PATCH 1/4] Reject invalid dates despite being valid Date objects --- date/valid.js | 3 ++- date/valid.json | 2 +- date/valid.test.ts | 15 +++++++++++++-- date/valid.ts | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) 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..9caec0a7 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 a valid date.", "signature": "(date?: any) => boolean", "examples": [ { diff --git a/date/valid.test.ts b/date/valid.test.ts index 351544ad..461d2025 100644 --- a/date/valid.test.ts +++ b/date/valid.test.ts @@ -3,7 +3,18 @@ import valid from "./valid.ts"; describe("valid", () => { - it.skip("TODO", () => { - expect(valid()).toBeDefined(); + it("checks if the given date is a valid date", () => { + expect(valid(new Date())).toBe(true); + expect(valid(new Date("2020-01-31T09:52:31.618Z"))).toBe(true); + 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; From f7b9b6ac7476b1030ff51c424aca3649e970c546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Zalewski?= Date: Wed, 5 Feb 2020 10:32:53 +0100 Subject: [PATCH 2/4] Regenerate docs --- README.md | 2 ++ date/README.md | 2 ++ date/valid.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/README.md b/README.md index b091250b..9658a8b7 100644 --- a/README.md +++ b/README.md @@ -1199,6 +1199,8 @@ string[] #### valid +Checks if the given date is a valid date. + ##### Type signature diff --git a/date/README.md b/date/README.md index 97da2b05..44b37e0b 100644 --- a/date/README.md +++ b/date/README.md @@ -460,6 +460,8 @@ string[] # valid +Checks if the given date is a valid date. + ## Type signature diff --git a/date/valid.md b/date/valid.md index 014ebdd5..faaed46e 100644 --- a/date/valid.md +++ b/date/valid.md @@ -1,5 +1,7 @@ # valid +Checks if the given date is a valid date. + ## Type signature From bd453213270a3ce8eef84ebd7d269e3ae3f0436f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Zalewski?= Date: Wed, 5 Feb 2020 13:16:27 +0100 Subject: [PATCH 3/4] Simplify date/valid description --- README.md | 2 +- date/README.md | 2 +- date/valid.json | 2 +- date/valid.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9658a8b7..be645bfd 100644 --- a/README.md +++ b/README.md @@ -1199,7 +1199,7 @@ string[] #### valid -Checks if the given date is a valid date. +Checks if the given date is valid. ##### Type signature diff --git a/date/README.md b/date/README.md index 44b37e0b..94394377 100644 --- a/date/README.md +++ b/date/README.md @@ -460,7 +460,7 @@ string[] # valid -Checks if the given date is a valid date. +Checks if the given date is valid. ## Type signature diff --git a/date/valid.json b/date/valid.json index 9caec0a7..02fe8164 100644 --- a/date/valid.json +++ b/date/valid.json @@ -1,6 +1,6 @@ { "name": "valid", - "description": "Checks if the given date is a valid date.", + "description": "Checks if the given date is valid.", "signature": "(date?: any) => boolean", "examples": [ { diff --git a/date/valid.md b/date/valid.md index faaed46e..7f15ec4e 100644 --- a/date/valid.md +++ b/date/valid.md @@ -1,6 +1,6 @@ # valid -Checks if the given date is a valid date. +Checks if the given date is valid. ## Type signature From 2791939f47158abcd96963c6775a8a1b2476be24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Zalewski?= Date: Wed, 5 Feb 2020 13:17:06 +0100 Subject: [PATCH 4/4] Split date/valid tests to check for Invalid Date in a separate test case --- date/valid.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/date/valid.test.ts b/date/valid.test.ts index 461d2025..1c2c7ec5 100644 --- a/date/valid.test.ts +++ b/date/valid.test.ts @@ -3,9 +3,13 @@ import valid from "./valid.ts"; describe("valid", () => { - it("checks if the given date is a valid date", () => { + 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); });