Skip to content

Commit 81e1169

Browse files
chenluliLAI-X
authored andcommitted
test(ava/data): add test cases for parseIsoDateString & update isoDatePatternsNotStrict test
1 parent e10d4ab commit 81e1169

File tree

1 file changed

+38
-8
lines changed

1 file changed

+38
-8
lines changed

packages/ava/__tests__/unit/data/utils/isType/isDateString.test.ts

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
getIsoDatePatterns,
33
getIsoTimePatterns,
44
isDateString,
5+
parseIsoDateString,
56
} from '../../../../../src/data/utils/isType/isDateString';
67

78
describe('func: isDateString', () => {
@@ -38,21 +39,50 @@ describe('func: isDateString', () => {
3839
});
3940
});
4041

42+
describe('func: parseIsoDateString', () => {
43+
test('parse a date string to date type', () => {
44+
expect(parseIsoDateString('1991')).toStrictEqual(new Date('1991-01-01 00:00:00.000'));
45+
expect(parseIsoDateString('2010 W08 1')).toStrictEqual(new Date('2010-02-15 00:00:00.000'));
46+
expect(parseIsoDateString('2010-W08')).toStrictEqual(new Date('2010-02-15 00:00:00.000'));
47+
expect(parseIsoDateString('2010-08-01')).toStrictEqual(new Date('2010-08-01 00:00:00.000'));
48+
expect(parseIsoDateString('20100801')).toStrictEqual(new Date('2010-08-01 00:00:00.000'));
49+
expect(parseIsoDateString('2010/08/01')).toStrictEqual(new Date('2010-08-01 00:00:00.000'));
50+
expect(parseIsoDateString('12/08/1999')).toStrictEqual(new Date('1999-12-08 00:00:00.000'));
51+
expect(parseIsoDateString('1/1/1999')).toStrictEqual(new Date('1999-01-01 00:00:00.000'));
52+
expect(parseIsoDateString('1999-01')).toStrictEqual(new Date('1999-01 00:00:00.000'));
53+
expect(parseIsoDateString('1999-200')).toStrictEqual(new Date(1999, 0, 200));
54+
expect(parseIsoDateString('1999-367')).toBe(null);
55+
expect(parseIsoDateString('2010-08-01 20:00:00')).toStrictEqual(new Date('2010-08-01 20:00:00.000'));
56+
expect(parseIsoDateString('20:00:00')).toStrictEqual(new Date('01-01 20:00:00'));
57+
expect(parseIsoDateString('20:00:00Z')).toStrictEqual(new Date('01-01 20:00:00Z'));
58+
expect(parseIsoDateString('20:00:00+08:00')).toStrictEqual(new Date('01-01 20:00:00+08:00'));
59+
expect(parseIsoDateString('20:00:00-08:00')).toStrictEqual(new Date('01-01 20:00:00-08:00'));
60+
expect(parseIsoDateString('20:00:00.299-08:00')).toStrictEqual(new Date('01-01 20:00:00.299-08:00'));
61+
expect(parseIsoDateString('20:00:00.299')).toStrictEqual(new Date('01-01 20:00:00.299'));
62+
});
63+
64+
test('strictly recognize number as date', () => {
65+
expect(isDateString('997815')).toBe(false);
66+
expect(isDateString('1135028')).toBe(false);
67+
expect(isDateString('5388715')).toBe(false);
68+
});
69+
});
70+
4171
describe('Not strict', () => {
4272
const isoDatePatternsNotStrict = getIsoDatePatterns(false);
4373
const isoTimePatternsNotStrict = getIsoTimePatterns(false);
4474

4575
expect(isoDatePatternsNotStrict).toStrictEqual([
46-
'(18|19|20)\\d{2}',
47-
'(18|19|20)\\d{2}([-_./\\s])?W([0-4]\\d|5[0-2])(([-_./\\s])?([1-7]))?',
48-
'(0?[1-9]|1[012])([-_./\\s])?(0?[1-9]|[12]\\d|3[01])([-_./\\s])?(18|19|20)\\d{2}',
49-
'(18|19|20)\\d{2}([-_./\\s])?(0?[1-9]|1[012])([-_./\\s])?(0?[1-9]|[12]\\d|3[01])',
50-
'(18|19|20)\\d{2}([-_./\\s])?(0?[1-9]|1[012])',
51-
'(18|19|20)\\d{2}([-_./\\s])?((([0-2]\\d|3[0-5])\\d)|36[0-6])',
76+
'(?<year>(18|19|20)\\d{2})',
77+
'(?<year>(18|19|20)\\d{2})([-_./\\s])?W(?<week>[0-4]\\d|5[0-2])(([-_./\\s])?(?<weekday>[1-7]))?',
78+
'(?<month>0?[1-9]|1[012])([-_./\\s])?(?<day>0?[1-9]|[12]\\d|3[01])([-_./\\s])?(?<year>(18|19|20)\\d{2})',
79+
'(?<year>(18|19|20)\\d{2})([-_./\\s])?(?<month>0?[1-9]|1[012])([-_./\\s])?(?<day>0?[1-9]|[12]\\d|3[01])',
80+
'(?<year>(18|19|20)\\d{2})([-_./\\s])?(?<month>0?[1-9]|1[012])',
81+
'(?<year>(18|19|20)\\d{2})([-_./\\s])?(?<yearDay>(([0-2]\\d|3[0-5])\\d)|36[0-6])',
5282
]);
5383

5484
expect(isoTimePatternsNotStrict).toStrictEqual([
55-
'(0?\\d|1\\d|2[0-4]):?(0?\\d|[012345]\\d):?(0?\\d|[012345]\\d)([.,]\\d{1,4})?(Z|[+-](0?\\d|1\\d|2[0-4])(:(0?\\d|[012345]\\d))?)?',
56-
'(0?\\d|1\\d|2[0-4]):?(0?\\d|[012345]\\d)?(Z|[+-](0?\\d|1\\d|2[0-4])(:(0?\\d|[012345]\\d))?)',
85+
'(?<hour>(0?\\d|[012345]\\d)):?(?<minute>(0?\\d|[012345]\\d)):?(?<second>(0?\\d|[012345]\\d))([.,](?<millisecond>\\d{1,4}))?(?<offset>Z|[+-](0?\\d|1\\d|2[0-4])(:(0?\\d|[012345]\\d))?)?',
86+
'(?<hour>(0?\\d|[012345]\\d)):?(?<minute>(0?\\d|[012345]\\d))?(?<offset>Z|[+-](0?\\d|1\\d|2[0-4])(:(0?\\d|[012345]\\d))?)',
5787
]);
5888
});

0 commit comments

Comments
 (0)