-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.test.js
120 lines (112 loc) · 4.3 KB
/
index.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import assert from 'node:assert';
import { describe, it } from 'node:test';
import { isValid, relativeToDate } from './index.js';
describe('datelative', () => {
describe('Invalid expressions', () => {
it('should throw an error if the expression is not a string', () => {
assert.throws(() => relativeToDate(2), {
name: 'TypeError',
message: 'The expression should be a string'
});
});
it('should throw an error if the expression is not a valid expression', () => {
assert.throws(() => relativeToDate('2'), {
name: 'Error',
message: 'The expression is not a valid expression'
});
});
});
describe('Valid expressions', () => {
[
['+2 days', 2 * 24 * 60 * 60 * 1000],
['-2 days', -2 * 24 * 60 * 60 * 1000],
['+2 weeks', 2 * 7 * 24 * 60 * 60 * 1000],
['-2 weeks', -2 * 7 * 24 * 60 * 60 * 1000],
['+2 months', 2 * 30 * 24 * 60 * 60 * 1000],
['-2 months', -2 * 30 * 24 * 60 * 60 * 1000],
['+2 years', 2 * 365 * 24 * 60 * 60 * 1000],
['-2 years', -2 * 365 * 24 * 60 * 60 * 1000],
['+2 quarters', 2 * 365 / 4 * 24 * 60 * 60 * 1000],
['-2 quarters', -2 * 365 / 4 * 24 * 60 * 60 * 1000],
['+2 milliseconds', 2],
['-2 milliseconds', -2],
['+2 seconds', 2 * 1000],
['-2 seconds', -2 * 1000],
['+2 minutes', 2 * 60 * 1000],
['-2 minutes', -2 * 60 * 1000],
['+2 hours', 2 * 60 * 60 * 1000],
['-2 hours', -2 * 60 * 60 * 1000],
['2 days', 2 * 24 * 60 * 60 * 1000],
['2 weeks', 2 * 7 * 24 * 60 * 60 * 1000],
['2 months', 2 * 30 * 24 * 60 * 60 * 1000],
['2 years', 2 * 365 * 24 * 60 * 60 * 1000],
['2 quarters', 2 * 365 / 4 * 24 * 60 * 60 * 1000],
['2 milliseconds', 2],
['2 seconds', 2 * 1000],
['2 minutes', 2 * 60 * 1000],
['2 hours', 2 * 60 * 60 * 1000],
['+2days', 2 * 24 * 60 * 60 * 1000],
['-2days', -2 * 24 * 60 * 60 * 1000],
['+2weeks', 2 * 7 * 24 * 60 * 60 * 1000],
['-2weeks', -2 * 7 * 24 * 60 * 60 * 1000],
['+2months', 2 * 30 * 24 * 60 * 60 * 1000],
['-2months', -2 * 30 * 24 * 60 * 60 * 1000],
['+2years', 2 * 365 * 24 * 60 * 60 * 1000],
['-2years', -2 * 365 * 24 * 60 * 60 * 1000],
['+2quarters', 2 * 365 / 4 * 24 * 60 * 60 * 1000],
['-2quarters', -2 * 365 / 4 * 24 * 60 * 60 * 1000],
['+2milliseconds', 2],
['-2milliseconds', -2],
['+2seconds', 2 * 1000],
['-2seconds', -2 * 1000],
['+2minutes', 2 * 60 * 1000],
['-2minutes', -2 * 60 * 1000],
['+2hours', 2 * 60 * 60 * 1000],
['-2hours', -2 * 60 * 60 * 1000],
// the other units
['+2ms', 2],
['-2ms', -2],
['+2s', 2 * 1000],
['-2s', -2 * 1000],
['+2min', 2 * 60 * 1000],
['-2min', -2 * 60 * 1000],
['+2hr', 2 * 60 * 60 * 1000],
['-2hr', -2 * 60 * 60 * 1000],
['+2d', 2 * 24 * 60 * 60 * 1000],
['-2d', -2 * 24 * 60 * 60 * 1000],
['+2w', 2 * 7 * 24 * 60 * 60 * 1000],
['-2w', -2 * 7 * 24 * 60 * 60 * 1000],
['+2M', 2 * 30 * 24 * 60 * 60 * 1000],
['-2M', -2 * 30 * 24 * 60 * 60 * 1000],
['+2y', 2 * 365 * 24 * 60 * 60 * 1000],
['-2y', -2 * 365 * 24 * 60 * 60 * 1000],
['+2q', 2 * 365 / 4 * 24 * 60 * 60 * 1000],
['-2q', -2 * 365 / 4 * 24 * 60 * 60 * 1000],
['+2 ms', 2],
['-2 ms', -2],
['+2 s', 2 * 1000],
['-2 s', -2 * 1000],
['+2 min', 2 * 60 * 1000],
['-2 min', -2 * 60 * 1000],
['+2 hr', 2 * 60 * 60 * 1000],
['-2 hr', -2 * 60 * 60 * 1000],
['+2 d', 2 * 24 * 60 * 60 * 1000],
['-2 d', -2 * 24 * 60 * 60 * 1000],
['+2 w', 2 * 7 * 24 * 60 * 60 * 1000],
['-2 w', -2 * 7 * 24 * 60 * 60 * 1000],
['+2 M', 2 * 30 * 24 * 60 * 60 * 1000],
['-2 M', -2 * 30 * 24 * 60 * 60 * 1000],
['+2 y', 2 * 365 * 24 * 60 * 60 * 1000],
['-2 y', -2 * 365 * 24 * 60 * 60 * 1000],
['+2 q', 2 * 365 / 4 * 24 * 60 * 60 * 1000],
['-2 q', -2 * 365 / 4 * 24 * 60 * 60 * 1000]
].forEach(([expression, millis]) => {
it(expression, () => {
const reference = new Date();
const expected = new Date(reference.getTime() + millis);
assert.deepEqual(isValid(expression), true);
assert.deepEqual(relativeToDate(expression, reference), expected);
});
});
});
});