Cleanup - unused files / unused exports / duplicate exports
[ProtonMail-WebClient.git] / packages / shared / test / calendar / icsSurgery / vevent.spec.ts
blob083329c0cf76f9c299cd2f694e57ecb6b703b0c7
1 import { getDtendPropertyFromDuration, getSupportedDtstamp } from '../../../lib/calendar/icsSurgery/vevent';
3 describe('getSupportedDtstamp()', () => {
4     it('leaves untouched a proper DTSTAMP', () => {
5         expect(
6             getSupportedDtstamp(
7                 {
8                     value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: true },
9                 },
10                 1666017619812
11             )
12         ).toEqual({ value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: true } });
13     });
15     it('leaves untouched a DTSTAMP with Zulu marker and time zone', () => {
16         expect(
17             getSupportedDtstamp(
18                 {
19                     value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: true },
20                     parameters: { tzid: 'Asia/Seoul' },
21                 },
22                 1666017619812
23             )
24         ).toEqual({ value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: true } });
25     });
27     it('converts a time-zoned DTSTAMP', () => {
28         expect(
29             getSupportedDtstamp(
30                 {
31                     value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: false },
32                     parameters: { tzid: 'America/Montevideo' },
33                 },
34                 1666017619812
35             )
36         ).toEqual({ value: { year: 2020, month: 1, day: 31, hours: 18, minutes: 11, seconds: 11, isUTC: true } });
37     });
39     it('converts a time-zoned DTSTAMP with a TZID that needs conversion', () => {
40         expect(
41             getSupportedDtstamp(
42                 {
43                     value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: false },
44                     parameters: { tzid: '/mozilla.org/20050126_1/Asia/Pyongyang' },
45                 },
46                 1666017619812
47             )
48         ).toEqual({ value: { year: 2020, month: 1, day: 31, hours: 6, minutes: 11, seconds: 11, isUTC: true } });
49     });
51     it('converts a floating DTSTAMP', () => {
52         expect(
53             getSupportedDtstamp(
54                 {
55                     value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: false },
56                 },
57                 1666017619812
58             )
59         ).toEqual({ value: { year: 2020, month: 1, day: 31, hours: 15, minutes: 11, seconds: 11, isUTC: true } });
60     });
62     it('converts an all-day DTSTAMP', () => {
63         expect(
64             getSupportedDtstamp(
65                 {
66                     value: { year: 2020, month: 1, day: 31 },
67                     parameters: { type: 'date' },
68                 },
69                 1666017619812
70             )
71         ).toEqual({ value: { year: 2020, month: 1, day: 31, hours: 0, minutes: 0, seconds: 0, isUTC: true } });
72     });
74     it('converts an all-day DTSTAMP with TZID', () => {
75         expect(
76             getSupportedDtstamp(
77                 {
78                     value: { year: 2020, month: 1, day: 31 },
79                     parameters: { type: 'date', tzid: 'America/Montevideo' },
80                 },
81                 1666017619812
82             )
83         ).toEqual({ value: { year: 2020, month: 1, day: 31, hours: 3, minutes: 0, seconds: 0, isUTC: true } });
84     });
86     it('defaults to the given timestamp if a time zone is present but not supported', () => {
87         expect(
88             getSupportedDtstamp(
89                 {
90                     value: { year: 2020, month: 1, day: 31 },
91                     parameters: { type: 'date', tzid: 'Europe/My_home' },
92                 },
93                 1666017619812
94             )
95         ).toEqual({ value: { year: 2022, month: 10, day: 17, hours: 14, minutes: 40, seconds: 19, isUTC: true } });
96     });
97 });
99 describe('getDtendPropertyFromDuration()', () => {
100     it('returns the appropriate dtend when given a duration and start', () => {
101         // UTC part day
102         expect(
103             getDtendPropertyFromDuration(
104                 { value: { year: 2020, month: 1, day: 31, hours: 0, minutes: 0, seconds: 0, isUTC: true } },
105                 {
106                     weeks: 0,
107                     days: 1,
108                     hours: 0,
109                     minutes: 0,
110                     seconds: 0,
111                     isNegative: false,
112                 }
113             )
114         ).toEqual({ value: { year: 2020, month: 2, day: 1, hours: 0, minutes: 0, seconds: 0, isUTC: true } });
116         // Localized part day
117         expect(
118             getDtendPropertyFromDuration(
119                 {
120                     parameters: { tzid: 'Europe/Zurich' },
121                     value: { year: 2020, month: 1, day: 1, hours: 0, minutes: 0, seconds: 0, isUTC: false },
122                 },
123                 {
124                     weeks: 0,
125                     days: 1,
126                     hours: 1,
127                     minutes: 0,
128                     seconds: 0,
129                     isNegative: false,
130                 }
131             )
132         ).toEqual({
133             parameters: { tzid: 'Europe/Zurich' },
134             value: { year: 2020, month: 1, day: 2, hours: 1, minutes: 0, seconds: 0, isUTC: false },
135         });
137         // All day with 1 day duration
138         expect(
139             getDtendPropertyFromDuration(
140                 {
141                     parameters: { type: 'date' },
142                     value: { year: 2020, month: 1, day: 1 },
143                 },
144                 {
145                     weeks: 0,
146                     days: 1,
147                     hours: 0,
148                     minutes: 0,
149                     seconds: 0,
150                     isNegative: false,
151                 }
152             )
153         ).toBeUndefined();
155         // All day badly formatted with 1 second duration
156         expect(
157             getDtendPropertyFromDuration(
158                 {
159                     parameters: { type: 'date' },
160                     value: { year: 2020, month: 1, day: 1, hours: 0, minutes: 0, seconds: 0, isUTC: true },
161                 },
162                 {
163                     weeks: 0,
164                     days: 0,
165                     hours: 0,
166                     minutes: 0,
167                     seconds: 1,
168                     isNegative: false,
169                 }
170             )
171         ).toBeUndefined();
173         // All day badly formatted with slightly over 1 day duration
174         expect(
175             getDtendPropertyFromDuration(
176                 {
177                     parameters: { type: 'date' },
178                     value: { year: 2020, month: 1, day: 1, hours: 0, minutes: 0, seconds: 0, isUTC: true },
179                 },
180                 {
181                     weeks: 0,
182                     days: 1,
183                     hours: 0,
184                     minutes: 0,
185                     seconds: 1,
186                     isNegative: false,
187                 }
188             )
189         ).toEqual({
190             parameters: { type: 'date' },
191             value: { year: 2020, month: 1, day: 3 },
192         });
194         // UTC Part day with complex dueration
195         expect(
196             getDtendPropertyFromDuration(
197                 {
198                     value: { year: 2020, month: 1, day: 1, hours: 0, minutes: 0, seconds: 0, isUTC: true },
199                 },
200                 {
201                     weeks: 2,
202                     days: 3,
203                     hours: 4,
204                     minutes: 5,
205                     seconds: 6,
206                     isNegative: false,
207                 }
208             )
209         ).toEqual({
210             value: { year: 2020, month: 1, day: 18, hours: 4, minutes: 5, seconds: 6, isUTC: true },
211         });
213         // All day badly formatted complex duration
214         expect(
215             getDtendPropertyFromDuration(
216                 {
217                     parameters: { type: 'date' },
218                     value: { year: 2020, month: 1, day: 1, hours: 0, minutes: 0, seconds: 0, isUTC: true },
219                 },
220                 {
221                     weeks: 5,
222                     days: 1,
223                     hours: 1,
224                     minutes: 1,
225                     seconds: 1,
226                     isNegative: false,
227                 }
228             )
229         ).toEqual({
230             parameters: { type: 'date' },
231             value: { year: 2020, month: 2, day: 7 },
232         });
234         // All day negative duration
235         expect(
236             getDtendPropertyFromDuration(
237                 {
238                     parameters: { type: 'date' },
239                     value: { year: 2020, month: 1, day: 1 },
240                 },
241                 {
242                     weeks: 5,
243                     days: 1,
244                     hours: 1,
245                     minutes: 1,
246                     seconds: 1,
247                     isNegative: true,
248                 }
249             )
250         ).toBeUndefined();
251     });