Merge branch 'feat/inda-383-daily-stat' into 'main'
[ProtonMail-WebClient.git] / packages / shared / test / calendar / rrule / rruleUntil.spec.js
blob33b6723e97674a125bff63b95d65c2b565cc8d51
1 import { FREQUENCY } from '../../../lib/calendar/constants';
2 import { withRruleUntil } from '../../../lib/calendar/recurrence/rruleUntil';
3 import { getDateProperty, getDateTimeProperty } from '../../../lib/calendar/vcalConverter';
4 import { fromLocalDate } from '../../../lib/date/timezone';
6 const getTest = (name, a, b, result) => ({
7     name,
8     a,
9     b,
10     result,
11 });
13 const getUntil = (date) => ({
14     ...fromLocalDate(date),
15     isUTC: true,
16 });
18 describe('rrule until', () => {
19     [
20         getTest(
21             'ignore non-until',
22             { freq: FREQUENCY.ONCE },
23             getDateProperty({
24                 year: 2020,
25                 month: 1,
26                 day: 1,
27             }),
28             { freq: FREQUENCY.ONCE }
29         ),
30         getTest(
31             'convert from a date-time until to date if start is all day',
32             {
33                 freq: FREQUENCY.ONCE,
34                 until: getUntil(new Date(2020, 1, 10, 12, 59, 59)),
35             },
36             getDateProperty({ year: 2020, month: 1, day: 1 }),
37             {
38                 freq: FREQUENCY.ONCE,
39                 until: { year: 2020, month: 2, day: 10 },
40             }
41         ),
42         getTest(
43             'convert from a date until to date-time if start is part-day',
44             {
45                 freq: FREQUENCY.ONCE,
46                 until: { year: 2020, month: 2, day: 10 },
47             },
48             getDateTimeProperty({ year: 2020, month: 1, day: 1, hours: 6, minutes: 12 }, 'Europe/Zurich'),
49             {
50                 freq: FREQUENCY.ONCE,
51                 until: getUntil(new Date(2020, 1, 10, 22, 59, 59)),
52             }
53         ),
54         getTest(
55             'convert date-time timezone if start is part-day',
56             {
57                 freq: FREQUENCY.ONCE,
58                 until: getUntil(new Date(2020, 1, 10, 22, 59, 59)),
59             },
60             getDateTimeProperty({ year: 2020, month: 1, day: 1, hours: 6, minutes: 12 }, 'UTC'),
61             {
62                 freq: FREQUENCY.ONCE,
63                 until: getUntil(new Date(2020, 1, 10, 23, 59, 59)),
64             }
65         ),
66     ].forEach(({ name, a, b, result }) => {
67         it(name, () => {
68             expect(withRruleUntil({ value: a }, b)).toEqual({ value: result });
69         });
70     });
71 });