1
|
|
|
import { assert } from 'chai'; |
2
|
|
|
import dayjs from 'dayjs'; |
3
|
|
|
import '../Test'; |
4
|
|
|
import customParseFormat from 'dayjs/plugin/customParseFormat'; |
5
|
|
|
import utc from 'dayjs/plugin/utc'; |
6
|
|
|
|
7
|
|
|
import { load } from '../utils'; |
8
|
|
|
|
9
|
|
|
dayjs.extend(utc); |
10
|
|
|
dayjs.extend(customParseFormat); |
11
|
|
|
|
12
|
|
|
const { workingDays } = load('utils'); |
13
|
|
|
|
14
|
|
|
suite('Utils: workingDays'); |
15
|
|
|
|
16
|
|
|
before(async function () {}); |
17
|
|
|
|
18
|
|
|
test('include end date into range', async function () { |
19
|
|
|
const res = workingDays({ |
20
|
|
|
from : dayjs.utc('01.01.2021', 'DD.MM.YYYY', true), |
21
|
|
|
to : dayjs.utc('15.01.2021', 'DD.MM.YYYY', true) |
22
|
|
|
}); |
23
|
|
|
|
24
|
|
|
assert.deepEqual(res.map(d => d.format('DD MMM (ddd)')), [ |
25
|
|
|
'01 Jan (Fri)', |
26
|
|
|
|
27
|
|
|
'04 Jan (Mon)', |
28
|
|
|
'05 Jan (Tue)', |
29
|
|
|
'06 Jan (Wed)', |
30
|
|
|
'07 Jan (Thu)', |
31
|
|
|
'08 Jan (Fri)', |
32
|
|
|
|
33
|
|
|
'11 Jan (Mon)', |
34
|
|
|
'12 Jan (Tue)', |
35
|
|
|
'13 Jan (Wed)', |
36
|
|
|
'14 Jan (Thu)', |
37
|
|
|
'15 Jan (Fri)' |
38
|
|
|
]); |
39
|
|
|
}); |
40
|
|
|
|
41
|
|
|
test('custom include/exclude dates', async function () { |
42
|
|
|
const res = workingDays({ |
43
|
|
|
from : dayjs.utc('01.01.2021', 'DD.MM.YYYY', true), |
44
|
|
|
to : dayjs.utc('15.01.2021', 'DD.MM.YYYY', true), |
45
|
|
|
include : [ dayjs.utc('09.01.2021', 'DD.MM.YYYY', true) ], |
46
|
|
|
exclude : [ dayjs.utc('07.01.2021', 'DD.MM.YYYY', true) ] |
47
|
|
|
}); |
48
|
|
|
|
49
|
|
|
assert.deepEqual(res.map(d => d.format('DD MMM (ddd)')), [ |
50
|
|
|
'01 Jan (Fri)', |
51
|
|
|
|
52
|
|
|
'04 Jan (Mon)', |
53
|
|
|
'05 Jan (Tue)', |
54
|
|
|
'06 Jan (Wed)', |
55
|
|
|
'08 Jan (Fri)', |
56
|
|
|
'09 Jan (Sat)', |
57
|
|
|
|
58
|
|
|
'11 Jan (Mon)', |
59
|
|
|
'12 Jan (Tue)', |
60
|
|
|
'13 Jan (Wed)', |
61
|
|
|
'14 Jan (Thu)', |
62
|
|
|
'15 Jan (Fri)' |
63
|
|
|
]); |
64
|
|
|
}); |
65
|
|
|
|
66
|
|
|
|
67
|
|
|
test('allow include be out of range', async function () { |
68
|
|
|
const res = workingDays({ |
69
|
|
|
from : dayjs.utc('01.01.2021', 'DD.MM.YYYY', true), |
70
|
|
|
to : dayjs.utc('15.01.2021', 'DD.MM.YYYY', true), |
71
|
|
|
include : [ dayjs.utc('20.01.2021', 'DD.MM.YYYY', true) ] |
72
|
|
|
}); |
73
|
|
|
|
74
|
|
|
assert.deepEqual(res.map(d => d.format('DD MMM (ddd)')), [ |
75
|
|
|
'01 Jan (Fri)', |
76
|
|
|
|
77
|
|
|
'04 Jan (Mon)', |
78
|
|
|
'05 Jan (Tue)', |
79
|
|
|
'06 Jan (Wed)', |
80
|
|
|
'07 Jan (Thu)', |
81
|
|
|
'08 Jan (Fri)', |
82
|
|
|
|
83
|
|
|
'11 Jan (Mon)', |
84
|
|
|
'12 Jan (Tue)', |
85
|
|
|
'13 Jan (Wed)', |
86
|
|
|
'14 Jan (Thu)', |
87
|
|
|
'15 Jan (Fri)', |
88
|
|
|
|
89
|
|
|
'20 Jan (Wed)' |
90
|
|
|
]); |
91
|
|
|
}); |
92
|
|
|
|
93
|
|
|
|
94
|
|
|
after(async function () {}); |
95
|
|
|
|