Skip to content

Commit 13fa712

Browse files
Merge pull request #54 from sandstreamdev/improve_date_validity_checks
Improve date validity checks
2 parents a5e0a09 + 2791939 commit 13fa712

File tree

7 files changed

+28
-5
lines changed

7 files changed

+28
-5
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,6 +1199,8 @@ string[]
11991199

12001200
#### valid
12011201

1202+
Checks if the given date is valid.
1203+
12021204
##### Type signature
12031205

12041206
<!-- prettier-ignore-start -->

date/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,8 @@ string[]
460460

461461
# valid
462462

463+
Checks if the given date is valid.
464+
463465
## Type signature
464466

465467
<!-- prettier-ignore-start -->

date/valid.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
export default date => (date ? date instanceof Date : false);
1+
export default date =>
2+
date ? date instanceof Date && !Number.isNaN(date.valueOf()) : false;

date/valid.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "valid",
3-
"description": "TODO: Fill short description here.",
3+
"description": "Checks if the given date is valid.",
44
"signature": "(date?: any) => boolean",
55
"examples": [
66
{

date/valid.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# valid
22

3+
Checks if the given date is valid.
4+
35
## Type signature
46

57
<!-- prettier-ignore-start -->

date/valid.test.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,22 @@
33
import valid from "./valid.ts";
44

55
describe("valid", () => {
6-
it.skip("TODO", () => {
7-
expect(valid()).toBeDefined();
6+
it("checks if the given date is valid", () => {
7+
expect(valid(new Date())).toBe(true);
8+
expect(valid(new Date("2020-01-31T09:52:31.618Z"))).toBe(true);
9+
});
10+
11+
it("should reject Invalid Date objects", () => {
12+
expect(valid(new Date("test"))).toBe(false);
13+
expect(valid(new Date("77724e10-2ffa-45cc-b05d-a91a846a6080"))).toBe(false);
14+
});
15+
16+
it("handles missing and falsy values", () => {
17+
expect(valid(undefined)).toBe(false);
18+
expect(valid(null)).toBe(false);
19+
expect(valid(false)).toBe(false);
20+
expect(valid(0)).toBe(false);
21+
expect(valid(NaN)).toBe(false);
22+
expect(valid("")).toBe(false);
823
});
924
});

date/valid.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
export default (date?: any): boolean => (date ? date instanceof Date : false);
1+
export default (date?: any): boolean =>
2+
date ? date instanceof Date && !Number.isNaN(date.valueOf()) : false;

0 commit comments

Comments
 (0)