1- import { describe , expect , test } from '@jest/globals' ;
1+ import { describe , expect , test , jest } from '@jest/globals' ;
22import { parseExpression , parseOp , toSlug } from './operations' ;
33
4+ jest
5+ . useFakeTimers ( )
6+ . setSystemTime ( new Date ( '2023-01-01' ) ) ;
7+
48describe ( 'Test parseExpression' , ( ) => {
9+ test ( 'Dynamic variables' , ( ) => {
10+ expect ( parseExpression ( '$NOW' , { } ) ) . toStrictEqual ( new Date ( ) ) ;
11+ } ) ;
12+
513 test ( 'INT op' , ( ) => {
614 expect ( parseExpression ( 'INT(a)' , { a : '1' } ) ) . toBe ( 1 ) ;
715 } ) ;
@@ -28,12 +36,48 @@ describe('Test parseExpression', () => {
2836 expect ( parseExpression ( 'CURRENCY(a)' , { a : 1000 } ) ) . toBe ( '1,000' ) ;
2937 } ) ;
3038
31- test ( 'DATE_ISO op' , ( ) => {
32- expect ( parseExpression ( 'DATE_ISO(a)' , { a : '2022-01-01' } ) ) . toBe ( '2022-01-01T00:00:00.000Z' ) ;
33- } ) ;
39+ describe ( 'Date ops' , ( ) => {
40+ test ( 'DATE_ISO op' , ( ) => {
41+ expect ( parseExpression ( 'DATE_ISO(a)' , { a : '2022-01-01' } ) ) . toBe ( '2022-01-01T00:00:00.000Z' ) ;
42+ expect ( parseExpression ( 'DATE_ISO($NOW)' , { } ) ) . toBe ( '2023-01-01T00:00:00.000Z' ) ;
43+ } ) ;
44+
45+ test ( 'DATE_UTC op' , ( ) => {
46+ expect ( parseExpression ( 'DATE_UTC(a)' , { a : '2022-01-01' } ) ) . toBe ( 'Sat, 01 Jan 2022 00:00:00 GMT' ) ;
47+ expect ( parseExpression ( 'DATE_UTC($NOW)' , { } ) ) . toBe ( 'Sun, 01 Jan 2023 00:00:00 GMT' ) ;
48+ } ) ;
49+
50+ test ( 'YEAR op' , ( ) => {
51+ expect ( parseExpression ( 'YEAR($NOW)' , { } ) ) . toBe ( new Date ( ) . getFullYear ( ) ) ;
52+ } ) ;
53+
54+ test ( 'MONTH op' , ( ) => {
55+ expect ( parseExpression ( 'MONTH($NOW)' , { } ) ) . toBe ( new Date ( ) . getMonth ( ) ) ;
56+ } ) ;
3457
35- test ( 'DATE_UTC op' , ( ) => {
36- expect ( parseExpression ( 'DATE_UTC(a)' , { a : '2022-01-01' } ) ) . toBe ( 'Sat, 01 Jan 2022 00:00:00 GMT' ) ;
58+ test ( 'GET_DATE op' , ( ) => {
59+ expect ( parseExpression ( 'GET_DATE($NOW)' , { } ) ) . toBe ( new Date ( ) . getDate ( ) ) ;
60+ } ) ;
61+
62+ test ( 'DAY op' , ( ) => {
63+ expect ( parseExpression ( 'DAY($NOW)' , { } ) ) . toBe ( new Date ( ) . getDay ( ) ) ;
64+ } ) ;
65+
66+ test ( 'HOURS op' , ( ) => {
67+ expect ( parseExpression ( 'HOURS($NOW)' , { } ) ) . toBe ( new Date ( ) . getHours ( ) ) ;
68+ } ) ;
69+
70+ test ( 'MINUTES op' , ( ) => {
71+ expect ( parseExpression ( 'MINUTES($NOW)' , { } ) ) . toBe ( new Date ( ) . getMinutes ( ) ) ;
72+ } ) ;
73+
74+ test ( 'SECONDS op' , ( ) => {
75+ expect ( parseExpression ( 'SECONDS($NOW)' , { } ) ) . toBe ( new Date ( ) . getSeconds ( ) ) ;
76+ } ) ;
77+
78+ test ( 'TIME op' , ( ) => {
79+ expect ( parseExpression ( 'TIME($NOW)' , { } ) ) . toBe ( new Date ( ) . getTime ( ) ) ;
80+ } ) ;
3781 } ) ;
3882
3983 test ( 'ABS op' , ( ) => {
0 commit comments