@zohodesk/i18n 1.0.0-beta.23 → 1.0.0-beta.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +101 -92
  2. package/es/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  3. package/es/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  4. package/es/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  5. package/es/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  6. package/es/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  7. package/es/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  8. package/es/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  9. package/es/index.js +1 -1
  10. package/es/utils.js +62 -9
  11. package/lib/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  12. package/lib/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  13. package/lib/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  14. package/lib/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  15. package/lib/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  16. package/lib/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  17. package/lib/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  18. package/lib/index.js +18 -0
  19. package/lib/utils.js +65 -9
  20. package/package.json +29 -29
  21. package/src/I18NContext.js +2 -2
  22. package/src/components/DateTimeDiffFormat.js +256 -256
  23. package/src/components/FormatText.js +14 -14
  24. package/src/components/HOCI18N.js +37 -37
  25. package/src/components/I18N.js +74 -74
  26. package/src/components/I18NProvider.js +110 -110
  27. package/src/components/PluralFormat.js +37 -37
  28. package/src/components/UserTimeDiffFormat.js +97 -97
  29. package/src/components/__tests__/DateTimeDiffFormat.spec.js +618 -618
  30. package/src/components/__tests__/FormatText.spec.js +26 -26
  31. package/src/components/__tests__/HOCI18N.spec.js +33 -33
  32. package/src/components/__tests__/I18N.spec.js +29 -29
  33. package/src/components/__tests__/I18NProvider.spec.js +65 -65
  34. package/src/components/__tests__/PluralFormat.spec.js +27 -27
  35. package/src/components/__tests__/UserTimeDiffFormat.spec.js +1076 -1076
  36. package/src/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  37. package/src/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  38. package/src/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  39. package/src/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  40. package/src/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  41. package/src/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  42. package/src/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  43. package/src/index.js +36 -33
  44. package/src/utils.js +585 -527
@@ -1,1076 +1,1076 @@
1
- import UserTimeDiffFormat from '../UserTimeDiffFormat';
2
- import I18NProvider, { i18NProviderUtils } from '../I18NProvider';
3
- import React from 'react';
4
- import renderer from 'react-test-renderer';
5
- let temp = Date;
6
- describe('UserTimeDiffFormat component', () => {
7
- /* eslint-disable */
8
- beforeAll(() => {
9
- Date = function(a) {
10
- if (a) {
11
- return new temp(a);
12
- }
13
- return new temp('2016-10-25T05:55:28.000Z');
14
- };
15
- Date.UTC = temp.UTC;
16
- Date.now = temp.now;
17
- });
18
-
19
- afterAll(() => {
20
- Date = temp;
21
- });
22
- /* eslint-enable */
23
- it('Should display yesterday - with same time', () => {
24
- let ele = renderer.create(
25
- <I18NProvider
26
- i18n={{ today: 'today', yesterday: 'yesterday' }}
27
- timeZone='Asia/Kolkata'
28
- >
29
- <UserTimeDiffFormat
30
- to='2016-10-24T05:55:28.000Z'
31
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
32
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
33
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
34
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
35
- ago='ago'
36
- later='later'
37
- />
38
- </I18NProvider>
39
- );
40
- let tree = ele.toJSON();
41
- expect(tree).toMatchSnapshot();
42
- });
43
- it('Should display yesterday - less than 24 hour', () => {
44
- let ele = renderer.create(
45
- <I18NProvider
46
- i18n={{ today: 'today', yesterday: 'yesterday' }}
47
- timeZone='Asia/Kolkata'
48
- >
49
- <UserTimeDiffFormat
50
- to='2016-10-24T06:55:28.000Z'
51
- toTimeZone='Asia/Kolkata'
52
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
53
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
54
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
55
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
56
- ago='ago'
57
- later='later'
58
- />
59
- </I18NProvider>
60
- );
61
- let tree = ele.toJSON();
62
- expect(tree).toMatchSnapshot();
63
- });
64
- it('Should display yesterday - greater than 24 hour', () => {
65
- let ele = renderer.create(
66
- <I18NProvider
67
- i18n={{ today: 'today', yesterday: 'yesterday' }}
68
- timeZone='Asia/Kolkata'
69
- >
70
- <UserTimeDiffFormat
71
- to='2016-10-24T04:55:28.000Z'
72
- toTimeZone='Asia/Kolkata'
73
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
74
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
75
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
76
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
77
- ago='ago'
78
- later='later'
79
- />
80
- </I18NProvider>
81
- );
82
- let tree = ele.toJSON();
83
- expect(tree).toMatchSnapshot();
84
- });
85
- it('Should display today key - same time', () => {
86
- let ele = renderer.create(
87
- <I18NProvider
88
- i18n={{ today: 'today', yesterday: 'yesterday' }}
89
- timeZone='Asia/Kolkata'
90
- >
91
- <UserTimeDiffFormat
92
- to='2016-10-25T05:55:28.000Z'
93
- toTimeZone='Asia/Kolkata'
94
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
95
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
96
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
97
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
98
- ago='ago'
99
- later='later'
100
- />
101
- </I18NProvider>
102
- );
103
- let tree = ele.toJSON();
104
- expect(tree).toMatchSnapshot();
105
- });
106
-
107
- it('Should display today key - less than 24 hour', () => {
108
- let ele = renderer.create(
109
- <I18NProvider
110
- i18n={{ today: 'today', yesterday: 'yesterday' }}
111
- timeZone='Asia/Kolkata'
112
- >
113
- <UserTimeDiffFormat
114
- to='2016-10-25T04:55:28.000Z'
115
- toTimeZone='Asia/Kolkata'
116
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
117
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
118
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
119
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
120
- ago='ago'
121
- later='later'
122
- />
123
- </I18NProvider>
124
- );
125
- let tree = ele.toJSON();
126
- expect(tree).toMatchSnapshot();
127
- });
128
- it('Should display today key - greater than 24 hour', () => {
129
- let ele = renderer.create(
130
- <I18NProvider
131
- i18n={{ today: 'today', yesterday: 'yesterday' }}
132
- timeZone='Asia/Kolkata'
133
- >
134
- <UserTimeDiffFormat
135
- to='2016-10-25T06:55:28.000Z'
136
- toTimeZone='Asia/Kolkata'
137
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
138
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
139
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
140
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
141
- ago='ago'
142
- later='later'
143
- />
144
- </I18NProvider>
145
- );
146
- let tree = ele.toJSON();
147
- expect(tree).toMatchSnapshot();
148
- });
149
- it('Should display tomorrow key - same time', () => {
150
- let ele = renderer.create(
151
- <I18NProvider
152
- i18n={{ today: 'today', yesterday: 'yesterday' }}
153
- timeZone='Asia/Kolkata'
154
- >
155
- <UserTimeDiffFormat
156
- to='2016-10-26T05:55:28.000Z'
157
- toTimeZone='Asia/Kolkata'
158
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
159
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
160
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
161
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
162
- ago='ago'
163
- later='later'
164
- />
165
- </I18NProvider>
166
- );
167
- let tree = ele.toJSON();
168
- expect(tree).toMatchSnapshot();
169
- });
170
- it('Should display tomorrow key - less than 24 hour', () => {
171
- let ele = renderer.create(
172
- <I18NProvider
173
- i18n={{ today: 'today', yesterday: 'yesterday' }}
174
- timeZone='Asia/Kolkata'
175
- >
176
- <UserTimeDiffFormat
177
- to='2016-10-26T04:55:28.000Z'
178
- toTimeZone='Asia/Kolkata'
179
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
180
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
181
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
182
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
183
- ago='ago'
184
- later='later'
185
- />
186
- </I18NProvider>
187
- );
188
- let tree = ele.toJSON();
189
- expect(tree).toMatchSnapshot();
190
- });
191
- it('Should display tomorrow key - greater than 24 hour', () => {
192
- let ele = renderer.create(
193
- <I18NProvider
194
- i18n={{ today: 'today', yesterday: 'yesterday' }}
195
- timeZone='Asia/Kolkata'
196
- >
197
- <UserTimeDiffFormat
198
- to='2016-10-26T06:55:28.000Z'
199
- toTimeZone='Asia/Kolkata'
200
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
201
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
202
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
203
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
204
- ago='ago'
205
- later='later'
206
- />
207
- </I18NProvider>
208
- );
209
- let tree = ele.toJSON();
210
- expect(tree).toMatchSnapshot();
211
- });
212
- it('Should display other - same time', () => {
213
- let ele = renderer.create(
214
- <I18NProvider
215
- i18n={{ today: 'today', yesterday: 'yesterday' }}
216
- timeZone='Asia/Kolkata'
217
- >
218
- <UserTimeDiffFormat
219
- to='2016-10-23T05:55:28.000Z'
220
- toTimeZone='Asia/Kolkata'
221
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
222
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
223
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
224
- others={({ years, days, hours, minutes, suffix }) => {
225
- if (days > 7) {
226
- return 'DD-MM-YYYY';
227
- }
228
- return '[less 7] DD-MM-YYYY';
229
-
230
- }}
231
- ago='ago'
232
- later='later'
233
- />
234
- </I18NProvider>
235
- );
236
- let tree = ele.toJSON();
237
- expect(tree).toMatchSnapshot();
238
- });
239
- it('Should display other - greater time', () => {
240
- let ele = renderer.create(
241
- <I18NProvider
242
- i18n={{ today: 'today', yesterday: 'yesterday' }}
243
- timeZone='Asia/Kolkata'
244
- >
245
- <UserTimeDiffFormat
246
- to='2016-10-23T06:55:28.000Z'
247
- toTimeZone='Asia/Kolkata'
248
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
249
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
250
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
251
- others={({ years, days, hours, minutes, suffix }) => {
252
- if (days > 7) {
253
- return 'DD-MM-YYYY';
254
- }
255
- return '[less 7] DD-MM-YYYY';
256
-
257
- }}
258
- ago='ago'
259
- later='later'
260
- />
261
- </I18NProvider>
262
- );
263
- let tree = ele.toJSON();
264
- expect(tree).toMatchSnapshot();
265
- });
266
- it('Should display other - less time', () => {
267
- let ele = renderer.create(
268
- <I18NProvider
269
- i18n={{ today: 'today', yesterday: 'yesterday' }}
270
- timeZone='Asia/Kolkata'
271
- >
272
- <UserTimeDiffFormat
273
- to='2016-10-23T04:55:28.000Z'
274
- toTimeZone='Asia/Kolkata'
275
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
276
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
277
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
278
- others={({ years, days, hours, minutes, suffix }) => {
279
- if (days > 7) {
280
- return 'DD-MM-YYYY';
281
- }
282
- return '[less 7] DD-MM-YYYY';
283
-
284
- }}
285
- ago='ago'
286
- later='later'
287
- />
288
- </I18NProvider>
289
- );
290
- let tree = ele.toJSON();
291
- expect(tree).toMatchSnapshot();
292
- });
293
- it('Should display other later- same time', () => {
294
- let ele = renderer.create(
295
- <I18NProvider
296
- i18n={{ today: 'today', yesterday: 'yesterday' }}
297
- timeZone='Asia/Kolkata'
298
- >
299
- <UserTimeDiffFormat
300
- to='2016-10-27T05:55:28.000Z'
301
- toTimeZone='Asia/Kolkata'
302
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
303
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
304
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
305
- others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
306
- if (days > 7) {
307
- return 'DD-MM-YYYY';
308
- }
309
- return '[less 7] DD-MM-YYYY';
310
-
311
- }}
312
- ago='ago'
313
- later='later'
314
- />
315
- </I18NProvider>
316
- );
317
- let tree = ele.toJSON();
318
- expect(tree).toMatchSnapshot();
319
- });
320
- it('Should display other later- less time', () => {
321
- let ele = renderer.create(
322
- <I18NProvider
323
- i18n={{ today: 'today', yesterday: 'yesterday' }}
324
- timeZone='Asia/Kolkata'
325
- >
326
- <UserTimeDiffFormat
327
- to='2016-10-27T06:55:28.000Z'
328
- toTimeZone='Asia/Kolkata'
329
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
330
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
331
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
332
- others={({ years, days, hours, minutes, suffix }) => {
333
- if (days > 7) {
334
- return 'DD-MM-YYYY';
335
- }
336
- return '[less 7] DD-MM-YYYY';
337
-
338
- }}
339
- ago='ago'
340
- later='later'
341
- />
342
- </I18NProvider>
343
- );
344
- let tree = ele.toJSON();
345
- expect(tree).toMatchSnapshot();
346
- });
347
- it('Should display other later- less time', () => {
348
- let ele = renderer.create(
349
- <I18NProvider
350
- i18n={{ today: 'today', yesterday: 'yesterday' }}
351
- timeZone='Asia/Kolkata'
352
- >
353
- <UserTimeDiffFormat
354
- to='2016-10-27T04:55:28.000Z'
355
- toTimeZone='Asia/Kolkata'
356
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
357
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
358
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
359
- others={({ years, days, hours, minutes, suffix }) => {
360
- if (days > 7) {
361
- return 'DD-MM-YYYY';
362
- }
363
- return '[less 7] DD-MM-YYYY';
364
-
365
- }}
366
- ago='ago'
367
- later='later'
368
- />
369
- </I18NProvider>
370
- );
371
- let tree = ele.toJSON();
372
- expect(tree).toMatchSnapshot();
373
- });
374
- it('Should display others', () => {
375
- let ele = renderer.create(
376
- <I18NProvider
377
- i18n={{ today: 'today', yesterday: 'yesterday' }}
378
- timeZone='Asia/Kolkata'
379
- >
380
- <UserTimeDiffFormat
381
- to='2016-11-27T05:55:28.000Z'
382
- toTimeZone='Asia/Kolkata'
383
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
384
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
385
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
386
- others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
387
- if (days > 7) {
388
- return 'DD-MM-YYYY';
389
- }
390
- return '[less 7] DD-MM-YYYY';
391
-
392
- }}
393
- ago='ago'
394
- later='later'
395
- />
396
- </I18NProvider>
397
- );
398
- let tree = ele.toJSON();
399
- expect(tree).toMatchSnapshot();
400
- });
401
-
402
- it('Should display today1', () => {
403
- let toDates = [
404
- '2016-10-24T05:55:28.000Z',
405
- '2016-10-24T06:55:28.000Z',
406
- '2016-10-24T04:55:28.000Z',
407
- '2016-10-25T05:55:28.000Z',
408
- '2016-10-25T04:55:28.000Z',
409
- '2016-10-25T06:55:28.000Z',
410
- '2016-10-26T05:55:28.000Z',
411
- '2016-10-26T04:55:28.000Z',
412
- '2016-10-26T06:55:28.000Z',
413
- '2016-10-23T05:55:28.000Z',
414
- '2016-10-23T04:55:28.000Z',
415
- '2016-10-23T06:55:28.000Z'
416
- ];
417
- let ele = renderer.create(
418
- <I18NProvider
419
- i18n={{
420
- today: 'today',
421
- yesterday: 'yesterday',
422
- now: 'noooow',
423
- 'support.1day.ago': '1day ago',
424
- 'support.1day.nhours.ago': 'one day {0} hours ago',
425
- 'support.1min.ago': '1min ago',
426
- 'support.nmins.ago': '{0} mins ago'
427
- }}
428
- timeZone='Asia/Kolkata'
429
- >
430
- <div>
431
- {toDates.map((to, i) => (
432
- <UserTimeDiffFormat
433
- key={i}
434
- to={to}
435
- toTimeZone='Asia/Kolkata'
436
- format={({ years, days, months, hours }, pattern) => {
437
- switch (pattern) {
438
- case '000000':
439
- case '000001':
440
- case '000002':
441
- return {
442
- key: 'now'
443
- };
444
- break;
445
- case '000010':
446
- return {
447
- key: 'support.1min'
448
- };
449
- break;
450
- case '000020':
451
- return {
452
- key: 'support.nmins',
453
- params: ['m']
454
- };
455
- break;
456
- case '001000':
457
- case '001100':
458
- return {
459
- key: 'support.1day'
460
- };
461
- break;
462
- case '001200':
463
- case '001201':
464
- return {
465
- key: 'support.1day.nhours',
466
- params: ['h']
467
- };
468
- break;
469
- }
470
- }}
471
- ago='ago'
472
- later='later'
473
- />
474
- ))}
475
- </div>
476
- </I18NProvider>
477
- );
478
- let tree = ele.toJSON();
479
- expect(tree).toMatchSnapshot();
480
- });
481
- it('Should display today later', () => {
482
- let ele = renderer.create(
483
- <I18NProvider
484
- i18n={{
485
- today: 'today',
486
- yesterday: 'yesterday',
487
- 'today.later': '{0}:{1}:{2} later'
488
- }}
489
- timeZone='Asia/Kolkata'
490
- >
491
- <UserTimeDiffFormat
492
- to='2016-10-25T05:55:29.000Z'
493
- toTimeZone='Asia/Kolkata'
494
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
495
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
496
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
497
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
498
- ago='ago'
499
- later='later'
500
- />
501
- </I18NProvider>
502
- );
503
- let tree = ele.toJSON();
504
- expect(tree).toMatchSnapshot();
505
- });
506
- it('Should display today ago', () => {
507
- let ele = renderer.create(
508
- <I18NProvider
509
- i18n={{
510
- today: 'today',
511
- yesterday: 'yesterday',
512
- 'today.later': '{0}:{1}:{2} later',
513
- 'today.ago': '{0}:{1}:{2} ago'
514
- }}
515
- timeZone='Asia/Kolkata'
516
- >
517
- <UserTimeDiffFormat
518
- from='2016-10-25T05:55:30.000Z'
519
- to='2016-10-25T05:55:29.000Z'
520
- toTimeZone='Asia/Kolkata'
521
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
522
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
523
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
524
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
525
- ago='ago'
526
- later='later'
527
- />
528
- </I18NProvider>
529
- );
530
- let tree = ele.toJSON();
531
- expect(tree).toMatchSnapshot();
532
- });
533
- it('Should display years and days', () => {
534
- let ele = renderer.create(
535
- <I18NProvider
536
- i18n={{
537
- 'nyear.ndays.ago': '{0} years {1} days ago',
538
- yesterday: 'yesterday'
539
- }}
540
- timeZone='Asia/Kolkata'
541
- >
542
- <UserTimeDiffFormat
543
- from='2017-10-25T05:55:28.000Z'
544
- to='2015-08-25T05:55:28.000Z'
545
- toTimeZone='Asia/Kolkata'
546
- format={({ years, days, months, hours }, pattern) => {
547
- if (years > 1) {
548
- return {
549
- key: 'nyear.ndays',
550
- params: ['y', 'days']
551
- };
552
- }
553
- }}
554
- ago='ago'
555
- later='later'
556
- />
557
- </I18NProvider>
558
- );
559
- let tree = ele.toJSON();
560
- expect(tree).toMatchSnapshot();
561
- });
562
- it('Should display years and days1', () => {
563
- let ele = renderer.create(
564
- <I18NProvider
565
- i18n={{
566
- 'nyear.ndays.later': '{0} years {1} days later',
567
- yesterday: 'yesterday'
568
- }}
569
- timeZone='Asia/Kolkata'
570
- >
571
- <UserTimeDiffFormat
572
- from='2015-08-25T05:55:28.000Z'
573
- to='2017-10-25T05:55:28.000Z'
574
- toTimeZone='Asia/Kolkata'
575
- format={({ years, days, months, hours }, pattern) => {
576
- if (years > 1) {
577
- return {
578
- key: 'nyear.ndays',
579
- params: ['y', 'days']
580
- };
581
- }
582
- }}
583
- ago='ago'
584
- later='later'
585
- />
586
- </I18NProvider>
587
- );
588
- let tree = ele.toJSON();
589
- expect(tree).toMatchSnapshot();
590
- });
591
- it('Should display today key - user', () => {
592
- let ele = renderer.create(
593
- <I18NProvider
594
- i18n={{ today: 'today', yesterday: 'yesterday' }}
595
- timeZone='Asia/Kolkata'
596
- >
597
- <UserTimeDiffFormat
598
- to='2016-10-25T05:55:28.000Z'
599
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
600
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
601
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
602
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
603
- ago='ago'
604
- later='later'
605
- />
606
- </I18NProvider>
607
- );
608
- let tree = ele.toJSON();
609
- expect(tree).toMatchSnapshot();
610
- });
611
- it('Should display today later - user', () => {
612
- let ele = renderer.create(
613
- <I18NProvider
614
- i18n={{
615
- today: 'today',
616
- yesterday: 'yesterday',
617
- 'today.later': '{0}:{1}:{2} later'
618
- }}
619
- timeZone='Asia/Kolkata'
620
- >
621
- <UserTimeDiffFormat
622
- to='2016-10-25T05:55:29.000Z'
623
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
624
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
625
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
626
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
627
- ago='ago'
628
- later='later'
629
- />
630
- </I18NProvider>
631
- );
632
- let tree = ele.toJSON();
633
- expect(tree).toMatchSnapshot();
634
- });
635
- it('Should display today ago - user', () => {
636
- let ele = renderer.create(
637
- <I18NProvider
638
- i18n={{
639
- today: 'today',
640
- yesterday: 'yesterday',
641
- 'today.later': '{0}:{1}:{2} later',
642
- 'today.ago': '{0}:{1}:{2} ago'
643
- }}
644
- timeZone='Asia/Kolkata'
645
- >
646
- <UserTimeDiffFormat
647
- to='2016-10-25T05:55:27.000Z'
648
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
649
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
650
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
651
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
652
- ago='ago'
653
- later='later'
654
- />
655
- </I18NProvider>
656
- );
657
- let tree = ele.toJSON();
658
- expect(tree).toMatchSnapshot();
659
- });
660
-
661
- it('task due date set - today [hh:mm:AM/PM]', () => {
662
- let ele = renderer.create(
663
- <I18NProvider
664
- i18n={{
665
- today: 'today',
666
- yesterday: 'yesterday',
667
- 'year.day': 'late by 1year 1day',
668
- 'nyear.day': 'late by {0}years 1day',
669
- 'nyear.nday': 'late by {0}years {1}days',
670
- 'year.nday': 'late by 1year {0}days',
671
- 'day.hour': 'late by 1day 1hour',
672
- 'nday.hour': 'late by {0}days 1hour',
673
- 'nday.nhour': 'late by {0}days {1}hours',
674
- 'day.nhour': 'late by 1day {0}hours',
675
- 'hour.minute': 'late by 1hour 1minute',
676
- 'nhour.minute': 'late by {0}hours 1minute',
677
- 'nhour.nminute': 'late by {0}hours {1}minutes',
678
- 'hour.nminute': 'late by 1hour {0}minutes',
679
- minute: 'late by 1minute',
680
- nminute: 'late by {0}minutes',
681
- year: 'late by 1year',
682
- nyear: 'late by {0}years',
683
- day: 'late by 1day',
684
- nday: 'late by {0} days',
685
- hour: 'late by 1hour',
686
- nhours: 'late by {0}hours'
687
- }}
688
- timeZone='Asia/Kolkata'
689
- >
690
- <App />
691
- </I18NProvider>
692
- );
693
- function App() {
694
- return (
695
- <UserTimeDiffFormat
696
- to='2015-10-25T05:55:28.000Z'
697
- toTimeZone='Asia/Kolkata'
698
- today={'[today] hh:mm A'}
699
- yesterday={'dd:MM:YYYY hh:mm A'}
700
- tomorrow={'[tommorrow] hh:mm A'}
701
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
702
- ago='ago'
703
- later='later'
704
- title={i18NProviderUtils.userDateFormat(
705
- '2015-10-27T05:55:28.000Z',
706
- {},
707
- '',
708
- 'later',
709
- true,
710
- (diffObj, pattern) => {
711
- let getDateI18NString = {
712
- '1100': { key: 'year.day', params: ['yy', 'yDays'] },
713
- '2100': { key: 'nyear.day', params: ['yy', 'yDays'] },
714
- '2200': { key: 'nyear.nday', params: ['yy', 'yDays'] },
715
- '1200': { key: 'year.nday', params: ['yDays'] },
716
- '0110': { key: 'day.hour', params: ['yDays', 'hh'] },
717
- '0210': { key: 'nday.hour', params: ['yDays', 'hh'] },
718
- '0220': { key: 'nday.nhour', params: ['yDays', 'hh'] },
719
- '0120': { key: 'day.nhour', params: ['hh'] },
720
- '0011': { key: 'hour.minute', params: ['hh', 'mm'] },
721
- '0021': { key: 'nhour.minute', params: ['hh', 'mm'] },
722
- '0022': { key: 'nhour.nminute', params: ['hh', 'mm'] },
723
- '0012': { key: 'hour.nminute', params: ['mm'] },
724
- '0001': { key: 'minute', params: ['mm'] },
725
- '0002': { key: 'nminute', params: ['mm'] },
726
- '1000': { key: 'year', params: ['yy'] },
727
- '2000': { key: 'nyear', params: ['yy'] },
728
- '0100': { key: 'day', params: ['yDays'] },
729
- '0200': { key: 'nday', params: ['yDays'] },
730
- '0010': { key: 'hour', params: ['hh'] },
731
- '0020': { key: 'nhours', params: ['hh'] }
732
-
733
- // '0000': 'support.label.just.now',
734
- // '0001': 'support.1minute',
735
- // '0002': 'support.nminutes',
736
- // '0010': 'support.1hour',
737
- // '0011': 'support.1hour.1minute',
738
- // '0012': 'support.1hour.nminutes',
739
- // '0020': 'support.nhours',
740
- // '0021': 'support.nhours.1minute',
741
- // '0022': 'support.nhours.nminutes',
742
- // '0100': 'support.1day',
743
- // '0110': 'support.1day.1hour',
744
- // '0120': 'support.1day.nhours',
745
- // '0200': 'support.ndays',
746
- // '0210': 'support.ndays.1hour',
747
- // '0220': 'support.ndays.nhours',
748
- // '1000': 'support.1year',
749
- // '1100': 'support.1year.1day',
750
- // '1200': 'support.1year.ndays',
751
- // '2000': 'support.nyears',
752
- // '2100': 'support.nyears.1day',
753
- // '2200': 'support.nyears.ndays'
754
- };
755
- return getDateI18NString[pattern]
756
- ? getDateI18NString[pattern]
757
- : 'hh:mm A';
758
- // console.log(pattern, '===========>>>>pattern');
759
- // let { years, months, yDays: days, hours, minutes } = diffObj;
760
- // if (years == 1 && days == 1) {
761
- // return { key: 'year.day', pattern: ['YY', 'DD'] };
762
- // } else if (years > 1 && days == 1) {
763
- // return { key: 'nyear.day', pattern: ['YY', 'DD'] };
764
- // } else if (years > 1 && days > 1) {
765
- // return { key: 'nyear.nday', pattern: ['YY', 'DD'] };
766
- // } else if (years == 1 && days > 1) {
767
- // return { key: 'year.nday', pattern: ['DD'] };
768
- // } else if (days == 1 && hours == 1) {
769
- // return { key: 'day.hour', pattern: ['DD', 'hh'] };
770
- // } else if (days > 1 && hours == 1) {
771
- // return { key: 'nday.hour', pattern: ['DD', 'hh'] };
772
- // } else if (days > 1 && hours > 1) {
773
- // return { key: 'nday.nhour', pattern: ['DD', 'hh'] };
774
- // } else if (days == 1 && hours > 1) {
775
- // return { key: 'day.nhour', pattern: ['hh'] };
776
- // } else if (hours == 1 && minutes == 1) {
777
- // return { key: 'hour.minute', pattern: ['hh', 'mm'] };
778
- // } else if (hours > 1 && minutes == 1) {
779
- // return { key: 'nhour.minute', pattern: ['hh', 'mm'] };
780
- // } else if (hours > 1 && minutes > 1) {
781
- // return { key: 'nhour.nminute', pattern: ['hh', 'mm'] };
782
- // } else if (hours == 1 && minutes > 1) {
783
- // return { key: 'hour.nminute', pattern: ['mm'] };
784
- // } else if (minutes == 1) {
785
- // return { key: 'minute', pattern: ['mm'] };
786
- // } else if (minutes > 1) {
787
- // return { key: 'nminute', pattern: ['mm'] };
788
- // } else if (years == 1) {
789
- // return { key: 'year', pattern: ['YY'] };
790
- // } else if (years > 1) {
791
- // return { key: 'nyear', pattern: ['YY'] };
792
- // } else {
793
- // return 'hh:mm A';
794
- // }
795
- }
796
- )}
797
- />
798
- );
799
- }
800
- let tree = ele.toJSON();
801
- expect(tree).toMatchSnapshot();
802
- });
803
-
804
- it('task due date set - tomorrow [hh:mm:AM/PM]', () => {
805
- let ele = renderer.create(
806
- <I18NProvider
807
- i18n={{ today: 'today', yesterday: 'yesterday' }}
808
- timeZone='Asia/Kolkata'
809
- >
810
- <UserTimeDiffFormat
811
- to='2016-10-26T04:55:28.000Z'
812
- toTimeZone='Asia/Kolkata'
813
- today={'[today] hh:mm A'}
814
- yesterday={'dd:MM:YYYY hh:mm A'}
815
- tomorrow={'[tommorrow] hh:mm A'}
816
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
817
- ago='ago'
818
- later='later'
819
- />
820
- </I18NProvider>
821
- );
822
- let tree = ele.toJSON();
823
- expect(tree).toMatchSnapshot();
824
- });
825
- it('task due date set - yesterday dd:MM:YYYY hh:mm:A', () => {
826
- let ele = renderer.create(
827
- <I18NProvider
828
- i18n={{ today: 'today', yesterday: 'yesterday' }}
829
- timeZone='Asia/Kolkata'
830
- >
831
- <UserTimeDiffFormat
832
- to='2016-10-24T06:55:28.000Z'
833
- toTimeZone='Asia/Kolkata'
834
- today={'[today] hh:mm A'}
835
- yesterday={'DD/MM/YYYY hh:mm A'}
836
- tomorrow={'[tommorrow] hh:mm A'}
837
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
838
- ago='ago'
839
- later='later'
840
- />
841
- </I18NProvider>
842
- );
843
- let tree = ele.toJSON();
844
- expect(tree).toMatchSnapshot();
845
- });
846
-
847
- it('task due date set - overdue', () => {
848
- let ele = renderer.create(
849
- <I18NProvider
850
- i18n={{ 'overdue.ago': 'late by {0}' }}
851
- timeZone='Asia/Kolkata'
852
- >
853
- <UserTimeDiffFormat
854
- to='2016-10-24T05:55:28.000Z'
855
- toTimeZone='Asia/Kolkata'
856
- format={(diff, pattern) => {
857
- switch (pattern) {
858
- case '000000':
859
- case '000001':
860
- case '000002':
861
- case '000010':
862
- case '000011':
863
- case '000012':
864
- case '000022':
865
- case '000100':
866
- case '000101':
867
- case '000102':
868
- case '000110':
869
- case '000111':
870
- case '000112':
871
- case '000120':
872
- case '000121':
873
- case '000122':
874
- case '000200':
875
- return {
876
- key: 'overdue',
877
- params: ['dd']
878
- };
879
- }
880
- }}
881
- ago='ago'
882
- later='later'
883
- />
884
- </I18NProvider>
885
- );
886
- let tree = ele.toJSON();
887
- expect(tree).toMatchSnapshot();
888
- });
889
- //2016-10-25T05:55:28.000Z
890
- it('created time today', () => {
891
- let ele = renderer.create(
892
- <I18NProvider
893
- i18n={{ 'overdue.ago': 'late by {0}' }}
894
- timeZone='Asia/Kolkata'
895
- >
896
- <UserTimeDiffFormat
897
- to='2016-10-25T06:55:28.000Z'
898
- today={'hh:mm A'}
899
- yesterday={'DD/MM/YYYY hh:mm A'}
900
- tomorrow={'[tommorrow] hh:mm A'}
901
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
902
- ago='ago'
903
- later='later'
904
- />
905
- </I18NProvider>
906
- );
907
- let tree = ele.toJSON();
908
- expect(tree).toMatchSnapshot();
909
- });
910
- it('created time yesterday', () => {
911
- let ele = renderer.create(
912
- <I18NProvider
913
- i18n={{ 'overdue.ago': 'late by {0}' }}
914
- timeZone='Asia/Kolkata'
915
- >
916
- <UserTimeDiffFormat
917
- to='2016-10-24T06:55:28.000Z'
918
- today={'hh:mm A'}
919
- yesterday={'[yesterday] hh:mm A'}
920
- tomorrow={'[tommorrow] hh:mm A'}
921
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
922
- ago='ago'
923
- later='later'
924
- />
925
- </I18NProvider>
926
- );
927
- let tree = ele.toJSON();
928
- expect(tree).toMatchSnapshot();
929
- });
930
- it('created time tomorrow', () => {
931
- let ele = renderer.create(
932
- <I18NProvider
933
- i18n={{ 'overdue.ago': 'late by {0}' }}
934
- timeZone='Asia/Kolkata'
935
- >
936
- <UserTimeDiffFormat
937
- to='2016-10-26T06:55:28.000Z'
938
- today={'hh:mm A'}
939
- yesterday={'[yesterday] hh:mm A'}
940
- tomorrow={'[tommorrow] hh:mm A'}
941
- others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
942
- ago='ago'
943
- later='later'
944
- />
945
- </I18NProvider>
946
- );
947
- let tree = ele.toJSON();
948
- expect(tree).toMatchSnapshot();
949
- });
950
- it('created time within 7 days', () => {
951
- let ele = renderer.create(
952
- <I18NProvider
953
- i18n={{
954
- 'overdue.ago': 'late by {0}',
955
- 'support.ndays.nhours.ago': '{0} days {1} hours ago',
956
- 'support.ndays.1hour.ago': '{0} days one hour ago'
957
- }}
958
- timeZone='Asia/Kolkata'
959
- >
960
- <UserTimeDiffFormat
961
- to='2016-10-19T06:55:28.000Z'
962
- today={'hh:mm A'}
963
- yesterday={'[yesterday] hh:mm A'}
964
- tomorrow={'[tommorrow] hh:mm A'}
965
- others={({ years, months, days, hours, minutes, yDays }) => {
966
- years = years > 1 ? '2' : years;
967
- // months = diffObj1.months > 1 ? '2' : diffObj1.months;
968
- //days = diffObj1.days > 1 ? '2' : diffObj1.days;
969
- days = yDays > 1 ? '2' : yDays;
970
- hours = hours > 1 ? '2' : hours;
971
- minutes = minutes > 1 ? '2' : minutes;
972
- //seconds = diffObj1.seconds > 1 ? '2' : diffObj1.seconds;
973
- // let pattern = '' + years + months + days + hours + minutes + seconds;
974
- let count = 0;
975
- let pattern = [years, days, hours, minutes].reduce((res, next) => {
976
- if (count == 2) {
977
- res = `${res}0`;
978
- } else if (next != 0) {
979
- count++;
980
- res = res + next;
981
- } else {
982
- res = res + next;
983
- }
984
- return res;
985
- }, '');
986
- let getDateI18NString = {
987
- '0000': 'support.label.just.now',
988
- '0001': 'support.1minute',
989
- '0002': 'support.nminutes',
990
- '0010': 'support.1hour',
991
- '0011': 'support.1hour.1minute',
992
- '0012': 'support.1hour.nminutes',
993
- '0020': 'support.nhours',
994
- '0021': 'support.nhours.1minute',
995
- '0022': 'support.nhours.nminutes',
996
- '0100': 'support.1day',
997
- '0110': 'support.1day.1hour',
998
- '0120': 'support.1day.nhours',
999
- '0200': 'support.ndays',
1000
- '0210': 'support.ndays.1hour',
1001
- '0220': 'support.ndays.nhours',
1002
- '1000': 'support.1year',
1003
- '1100': 'support.1year.1day',
1004
- '1200': 'support.1year.ndays',
1005
- '2000': 'support.nyears',
1006
- '2100': 'support.nyears.1day',
1007
- '2200': 'support.nyears.ndays'
1008
- };
1009
- if (years == 0 && months == 0 && days < 7) {
1010
- return {
1011
- key: getDateI18NString[pattern],
1012
- params: ['d', 'h']
1013
- };
1014
- }
1015
- }}
1016
- ago='ago'
1017
- later='later'
1018
- />
1019
- </I18NProvider>
1020
- );
1021
- let tree = ele.toJSON();
1022
- expect(tree).toMatchSnapshot();
1023
- });
1024
-
1025
- it('created time within pattern', () => {
1026
- let ele = renderer.create(
1027
- <I18NProvider
1028
- i18n={{
1029
- 'overdue.ago': 'late by {0}',
1030
- 'support.ndays.nhours.ago': '{0} days {1} hours ago',
1031
- 'support.ndays.1hour.ago': '{0} days one hour ago'
1032
- }}
1033
- timeZone='Asia/Kolkata'
1034
- >
1035
- <UserTimeDiffFormat
1036
- to='2016-10-19T06:55:28.000Z'
1037
- format={({ years, months, days, hours, minutes, yDays }, pattern) => {
1038
- let getDateI18NString = {
1039
- '0000': 'support.label.just.now',
1040
- '0001': 'support.1minute',
1041
- '0002': 'support.nminutes',
1042
- '0010': 'support.1hour',
1043
- '0011': 'support.1hour.1minute',
1044
- '0012': 'support.1hour.nminutes',
1045
- '0020': 'support.nhours',
1046
- '0021': 'support.nhours.1minute',
1047
- '0022': 'support.nhours.nminutes',
1048
- '0100': 'support.1day',
1049
- '0110': 'support.1day.1hour',
1050
- '0120': 'support.1day.nhours',
1051
- '0200': 'support.ndays',
1052
- '0210': 'support.ndays.1hour',
1053
- '0220': 'support.ndays.nhours',
1054
- '1000': 'support.1year',
1055
- '1100': 'support.1year.1day',
1056
- '1200': 'support.1year.ndays',
1057
- '2000': 'support.nyears',
1058
- '2100': 'support.nyears.1day',
1059
- '2200': 'support.nyears.ndays'
1060
- };
1061
- if (years == 0 && months == 0 && days < 7) {
1062
- return {
1063
- key: getDateI18NString[pattern],
1064
- params: ['d', 'h']
1065
- };
1066
- }
1067
- }}
1068
- ago='ago'
1069
- later='later'
1070
- />
1071
- </I18NProvider>
1072
- );
1073
- let tree = ele.toJSON();
1074
- expect(tree).toMatchSnapshot();
1075
- });
1076
- });
1
+ import UserTimeDiffFormat from '../UserTimeDiffFormat';
2
+ import I18NProvider, { i18NProviderUtils } from '../I18NProvider';
3
+ import React from 'react';
4
+ import renderer from 'react-test-renderer';
5
+ let temp = Date;
6
+ describe('UserTimeDiffFormat component', () => {
7
+ /* eslint-disable */
8
+ beforeAll(() => {
9
+ Date = function(a) {
10
+ if (a) {
11
+ return new temp(a);
12
+ }
13
+ return new temp('2016-10-25T05:55:28.000Z');
14
+ };
15
+ Date.UTC = temp.UTC;
16
+ Date.now = temp.now;
17
+ });
18
+
19
+ afterAll(() => {
20
+ Date = temp;
21
+ });
22
+ /* eslint-enable */
23
+ it('Should display yesterday - with same time', () => {
24
+ let ele = renderer.create(
25
+ <I18NProvider
26
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
27
+ timeZone='Asia/Kolkata'
28
+ >
29
+ <UserTimeDiffFormat
30
+ to='2016-10-24T05:55:28.000Z'
31
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
32
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
33
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
34
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
35
+ ago='ago'
36
+ later='later'
37
+ />
38
+ </I18NProvider>
39
+ );
40
+ let tree = ele.toJSON();
41
+ expect(tree).toMatchSnapshot();
42
+ });
43
+ it('Should display yesterday - less than 24 hour', () => {
44
+ let ele = renderer.create(
45
+ <I18NProvider
46
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
47
+ timeZone='Asia/Kolkata'
48
+ >
49
+ <UserTimeDiffFormat
50
+ to='2016-10-24T06:55:28.000Z'
51
+ toTimeZone='Asia/Kolkata'
52
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
53
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
54
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
55
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
56
+ ago='ago'
57
+ later='later'
58
+ />
59
+ </I18NProvider>
60
+ );
61
+ let tree = ele.toJSON();
62
+ expect(tree).toMatchSnapshot();
63
+ });
64
+ it('Should display yesterday - greater than 24 hour', () => {
65
+ let ele = renderer.create(
66
+ <I18NProvider
67
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
68
+ timeZone='Asia/Kolkata'
69
+ >
70
+ <UserTimeDiffFormat
71
+ to='2016-10-24T04:55:28.000Z'
72
+ toTimeZone='Asia/Kolkata'
73
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
74
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
75
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
76
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
77
+ ago='ago'
78
+ later='later'
79
+ />
80
+ </I18NProvider>
81
+ );
82
+ let tree = ele.toJSON();
83
+ expect(tree).toMatchSnapshot();
84
+ });
85
+ it('Should display today key - same time', () => {
86
+ let ele = renderer.create(
87
+ <I18NProvider
88
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
89
+ timeZone='Asia/Kolkata'
90
+ >
91
+ <UserTimeDiffFormat
92
+ to='2016-10-25T05:55:28.000Z'
93
+ toTimeZone='Asia/Kolkata'
94
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
95
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
96
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
97
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
98
+ ago='ago'
99
+ later='later'
100
+ />
101
+ </I18NProvider>
102
+ );
103
+ let tree = ele.toJSON();
104
+ expect(tree).toMatchSnapshot();
105
+ });
106
+
107
+ it('Should display today key - less than 24 hour', () => {
108
+ let ele = renderer.create(
109
+ <I18NProvider
110
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
111
+ timeZone='Asia/Kolkata'
112
+ >
113
+ <UserTimeDiffFormat
114
+ to='2016-10-25T04:55:28.000Z'
115
+ toTimeZone='Asia/Kolkata'
116
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
117
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
118
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
119
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
120
+ ago='ago'
121
+ later='later'
122
+ />
123
+ </I18NProvider>
124
+ );
125
+ let tree = ele.toJSON();
126
+ expect(tree).toMatchSnapshot();
127
+ });
128
+ it('Should display today key - greater than 24 hour', () => {
129
+ let ele = renderer.create(
130
+ <I18NProvider
131
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
132
+ timeZone='Asia/Kolkata'
133
+ >
134
+ <UserTimeDiffFormat
135
+ to='2016-10-25T06:55:28.000Z'
136
+ toTimeZone='Asia/Kolkata'
137
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
138
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
139
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
140
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
141
+ ago='ago'
142
+ later='later'
143
+ />
144
+ </I18NProvider>
145
+ );
146
+ let tree = ele.toJSON();
147
+ expect(tree).toMatchSnapshot();
148
+ });
149
+ it('Should display tomorrow key - same time', () => {
150
+ let ele = renderer.create(
151
+ <I18NProvider
152
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
153
+ timeZone='Asia/Kolkata'
154
+ >
155
+ <UserTimeDiffFormat
156
+ to='2016-10-26T05:55:28.000Z'
157
+ toTimeZone='Asia/Kolkata'
158
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
159
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
160
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
161
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
162
+ ago='ago'
163
+ later='later'
164
+ />
165
+ </I18NProvider>
166
+ );
167
+ let tree = ele.toJSON();
168
+ expect(tree).toMatchSnapshot();
169
+ });
170
+ it('Should display tomorrow key - less than 24 hour', () => {
171
+ let ele = renderer.create(
172
+ <I18NProvider
173
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
174
+ timeZone='Asia/Kolkata'
175
+ >
176
+ <UserTimeDiffFormat
177
+ to='2016-10-26T04:55:28.000Z'
178
+ toTimeZone='Asia/Kolkata'
179
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
180
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
181
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
182
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
183
+ ago='ago'
184
+ later='later'
185
+ />
186
+ </I18NProvider>
187
+ );
188
+ let tree = ele.toJSON();
189
+ expect(tree).toMatchSnapshot();
190
+ });
191
+ it('Should display tomorrow key - greater than 24 hour', () => {
192
+ let ele = renderer.create(
193
+ <I18NProvider
194
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
195
+ timeZone='Asia/Kolkata'
196
+ >
197
+ <UserTimeDiffFormat
198
+ to='2016-10-26T06:55:28.000Z'
199
+ toTimeZone='Asia/Kolkata'
200
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
201
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
202
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
203
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
204
+ ago='ago'
205
+ later='later'
206
+ />
207
+ </I18NProvider>
208
+ );
209
+ let tree = ele.toJSON();
210
+ expect(tree).toMatchSnapshot();
211
+ });
212
+ it('Should display other - same time', () => {
213
+ let ele = renderer.create(
214
+ <I18NProvider
215
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
216
+ timeZone='Asia/Kolkata'
217
+ >
218
+ <UserTimeDiffFormat
219
+ to='2016-10-23T05:55:28.000Z'
220
+ toTimeZone='Asia/Kolkata'
221
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
222
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
223
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
224
+ others={({ years, days, hours, minutes, suffix }) => {
225
+ if (days > 7) {
226
+ return 'DD-MM-YYYY';
227
+ }
228
+ return '[less 7] DD-MM-YYYY';
229
+
230
+ }}
231
+ ago='ago'
232
+ later='later'
233
+ />
234
+ </I18NProvider>
235
+ );
236
+ let tree = ele.toJSON();
237
+ expect(tree).toMatchSnapshot();
238
+ });
239
+ it('Should display other - greater time', () => {
240
+ let ele = renderer.create(
241
+ <I18NProvider
242
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
243
+ timeZone='Asia/Kolkata'
244
+ >
245
+ <UserTimeDiffFormat
246
+ to='2016-10-23T06:55:28.000Z'
247
+ toTimeZone='Asia/Kolkata'
248
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
249
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
250
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
251
+ others={({ years, days, hours, minutes, suffix }) => {
252
+ if (days > 7) {
253
+ return 'DD-MM-YYYY';
254
+ }
255
+ return '[less 7] DD-MM-YYYY';
256
+
257
+ }}
258
+ ago='ago'
259
+ later='later'
260
+ />
261
+ </I18NProvider>
262
+ );
263
+ let tree = ele.toJSON();
264
+ expect(tree).toMatchSnapshot();
265
+ });
266
+ it('Should display other - less time', () => {
267
+ let ele = renderer.create(
268
+ <I18NProvider
269
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
270
+ timeZone='Asia/Kolkata'
271
+ >
272
+ <UserTimeDiffFormat
273
+ to='2016-10-23T04:55:28.000Z'
274
+ toTimeZone='Asia/Kolkata'
275
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
276
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
277
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
278
+ others={({ years, days, hours, minutes, suffix }) => {
279
+ if (days > 7) {
280
+ return 'DD-MM-YYYY';
281
+ }
282
+ return '[less 7] DD-MM-YYYY';
283
+
284
+ }}
285
+ ago='ago'
286
+ later='later'
287
+ />
288
+ </I18NProvider>
289
+ );
290
+ let tree = ele.toJSON();
291
+ expect(tree).toMatchSnapshot();
292
+ });
293
+ it('Should display other later- same time', () => {
294
+ let ele = renderer.create(
295
+ <I18NProvider
296
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
297
+ timeZone='Asia/Kolkata'
298
+ >
299
+ <UserTimeDiffFormat
300
+ to='2016-10-27T05:55:28.000Z'
301
+ toTimeZone='Asia/Kolkata'
302
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
303
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
304
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
305
+ others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
306
+ if (days > 7) {
307
+ return 'DD-MM-YYYY';
308
+ }
309
+ return '[less 7] DD-MM-YYYY';
310
+
311
+ }}
312
+ ago='ago'
313
+ later='later'
314
+ />
315
+ </I18NProvider>
316
+ );
317
+ let tree = ele.toJSON();
318
+ expect(tree).toMatchSnapshot();
319
+ });
320
+ it('Should display other later- less time', () => {
321
+ let ele = renderer.create(
322
+ <I18NProvider
323
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
324
+ timeZone='Asia/Kolkata'
325
+ >
326
+ <UserTimeDiffFormat
327
+ to='2016-10-27T06:55:28.000Z'
328
+ toTimeZone='Asia/Kolkata'
329
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
330
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
331
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
332
+ others={({ years, days, hours, minutes, suffix }) => {
333
+ if (days > 7) {
334
+ return 'DD-MM-YYYY';
335
+ }
336
+ return '[less 7] DD-MM-YYYY';
337
+
338
+ }}
339
+ ago='ago'
340
+ later='later'
341
+ />
342
+ </I18NProvider>
343
+ );
344
+ let tree = ele.toJSON();
345
+ expect(tree).toMatchSnapshot();
346
+ });
347
+ it('Should display other later- less time', () => {
348
+ let ele = renderer.create(
349
+ <I18NProvider
350
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
351
+ timeZone='Asia/Kolkata'
352
+ >
353
+ <UserTimeDiffFormat
354
+ to='2016-10-27T04:55:28.000Z'
355
+ toTimeZone='Asia/Kolkata'
356
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
357
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
358
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
359
+ others={({ years, days, hours, minutes, suffix }) => {
360
+ if (days > 7) {
361
+ return 'DD-MM-YYYY';
362
+ }
363
+ return '[less 7] DD-MM-YYYY';
364
+
365
+ }}
366
+ ago='ago'
367
+ later='later'
368
+ />
369
+ </I18NProvider>
370
+ );
371
+ let tree = ele.toJSON();
372
+ expect(tree).toMatchSnapshot();
373
+ });
374
+ it('Should display others', () => {
375
+ let ele = renderer.create(
376
+ <I18NProvider
377
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
378
+ timeZone='Asia/Kolkata'
379
+ >
380
+ <UserTimeDiffFormat
381
+ to='2016-11-27T05:55:28.000Z'
382
+ toTimeZone='Asia/Kolkata'
383
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
384
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
385
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
386
+ others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
387
+ if (days > 7) {
388
+ return 'DD-MM-YYYY';
389
+ }
390
+ return '[less 7] DD-MM-YYYY';
391
+
392
+ }}
393
+ ago='ago'
394
+ later='later'
395
+ />
396
+ </I18NProvider>
397
+ );
398
+ let tree = ele.toJSON();
399
+ expect(tree).toMatchSnapshot();
400
+ });
401
+
402
+ it('Should display today1', () => {
403
+ let toDates = [
404
+ '2016-10-24T05:55:28.000Z',
405
+ '2016-10-24T06:55:28.000Z',
406
+ '2016-10-24T04:55:28.000Z',
407
+ '2016-10-25T05:55:28.000Z',
408
+ '2016-10-25T04:55:28.000Z',
409
+ '2016-10-25T06:55:28.000Z',
410
+ '2016-10-26T05:55:28.000Z',
411
+ '2016-10-26T04:55:28.000Z',
412
+ '2016-10-26T06:55:28.000Z',
413
+ '2016-10-23T05:55:28.000Z',
414
+ '2016-10-23T04:55:28.000Z',
415
+ '2016-10-23T06:55:28.000Z'
416
+ ];
417
+ let ele = renderer.create(
418
+ <I18NProvider
419
+ i18n={{
420
+ today: 'today',
421
+ yesterday: 'yesterday',
422
+ now: 'noooow',
423
+ 'support.1day.ago': '1day ago',
424
+ 'support.1day.nhours.ago': 'one day {0} hours ago',
425
+ 'support.1min.ago': '1min ago',
426
+ 'support.nmins.ago': '{0} mins ago'
427
+ }}
428
+ timeZone='Asia/Kolkata'
429
+ >
430
+ <div>
431
+ {toDates.map((to, i) => (
432
+ <UserTimeDiffFormat
433
+ key={i}
434
+ to={to}
435
+ toTimeZone='Asia/Kolkata'
436
+ format={({ years, days, months, hours }, pattern) => {
437
+ switch (pattern) {
438
+ case '000000':
439
+ case '000001':
440
+ case '000002':
441
+ return {
442
+ key: 'now'
443
+ };
444
+ break;
445
+ case '000010':
446
+ return {
447
+ key: 'support.1min'
448
+ };
449
+ break;
450
+ case '000020':
451
+ return {
452
+ key: 'support.nmins',
453
+ params: ['m']
454
+ };
455
+ break;
456
+ case '001000':
457
+ case '001100':
458
+ return {
459
+ key: 'support.1day'
460
+ };
461
+ break;
462
+ case '001200':
463
+ case '001201':
464
+ return {
465
+ key: 'support.1day.nhours',
466
+ params: ['h']
467
+ };
468
+ break;
469
+ }
470
+ }}
471
+ ago='ago'
472
+ later='later'
473
+ />
474
+ ))}
475
+ </div>
476
+ </I18NProvider>
477
+ );
478
+ let tree = ele.toJSON();
479
+ expect(tree).toMatchSnapshot();
480
+ });
481
+ it('Should display today later', () => {
482
+ let ele = renderer.create(
483
+ <I18NProvider
484
+ i18n={{
485
+ today: 'today',
486
+ yesterday: 'yesterday',
487
+ 'today.later': '{0}:{1}:{2} later'
488
+ }}
489
+ timeZone='Asia/Kolkata'
490
+ >
491
+ <UserTimeDiffFormat
492
+ to='2016-10-25T05:55:29.000Z'
493
+ toTimeZone='Asia/Kolkata'
494
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
495
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
496
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
497
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
498
+ ago='ago'
499
+ later='later'
500
+ />
501
+ </I18NProvider>
502
+ );
503
+ let tree = ele.toJSON();
504
+ expect(tree).toMatchSnapshot();
505
+ });
506
+ it('Should display today ago', () => {
507
+ let ele = renderer.create(
508
+ <I18NProvider
509
+ i18n={{
510
+ today: 'today',
511
+ yesterday: 'yesterday',
512
+ 'today.later': '{0}:{1}:{2} later',
513
+ 'today.ago': '{0}:{1}:{2} ago'
514
+ }}
515
+ timeZone='Asia/Kolkata'
516
+ >
517
+ <UserTimeDiffFormat
518
+ from='2016-10-25T05:55:30.000Z'
519
+ to='2016-10-25T05:55:29.000Z'
520
+ toTimeZone='Asia/Kolkata'
521
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
522
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
523
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
524
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
525
+ ago='ago'
526
+ later='later'
527
+ />
528
+ </I18NProvider>
529
+ );
530
+ let tree = ele.toJSON();
531
+ expect(tree).toMatchSnapshot();
532
+ });
533
+ it('Should display years and days', () => {
534
+ let ele = renderer.create(
535
+ <I18NProvider
536
+ i18n={{
537
+ 'nyear.ndays.ago': '{0} years {1} days ago',
538
+ yesterday: 'yesterday'
539
+ }}
540
+ timeZone='Asia/Kolkata'
541
+ >
542
+ <UserTimeDiffFormat
543
+ from='2017-10-25T05:55:28.000Z'
544
+ to='2015-08-25T05:55:28.000Z'
545
+ toTimeZone='Asia/Kolkata'
546
+ format={({ years, days, months, hours }, pattern) => {
547
+ if (years > 1) {
548
+ return {
549
+ key: 'nyear.ndays',
550
+ params: ['y', 'days']
551
+ };
552
+ }
553
+ }}
554
+ ago='ago'
555
+ later='later'
556
+ />
557
+ </I18NProvider>
558
+ );
559
+ let tree = ele.toJSON();
560
+ expect(tree).toMatchSnapshot();
561
+ });
562
+ it('Should display years and days1', () => {
563
+ let ele = renderer.create(
564
+ <I18NProvider
565
+ i18n={{
566
+ 'nyear.ndays.later': '{0} years {1} days later',
567
+ yesterday: 'yesterday'
568
+ }}
569
+ timeZone='Asia/Kolkata'
570
+ >
571
+ <UserTimeDiffFormat
572
+ from='2015-08-25T05:55:28.000Z'
573
+ to='2017-10-25T05:55:28.000Z'
574
+ toTimeZone='Asia/Kolkata'
575
+ format={({ years, days, months, hours }, pattern) => {
576
+ if (years > 1) {
577
+ return {
578
+ key: 'nyear.ndays',
579
+ params: ['y', 'days']
580
+ };
581
+ }
582
+ }}
583
+ ago='ago'
584
+ later='later'
585
+ />
586
+ </I18NProvider>
587
+ );
588
+ let tree = ele.toJSON();
589
+ expect(tree).toMatchSnapshot();
590
+ });
591
+ it('Should display today key - user', () => {
592
+ let ele = renderer.create(
593
+ <I18NProvider
594
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
595
+ timeZone='Asia/Kolkata'
596
+ >
597
+ <UserTimeDiffFormat
598
+ to='2016-10-25T05:55:28.000Z'
599
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
600
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
601
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
602
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
603
+ ago='ago'
604
+ later='later'
605
+ />
606
+ </I18NProvider>
607
+ );
608
+ let tree = ele.toJSON();
609
+ expect(tree).toMatchSnapshot();
610
+ });
611
+ it('Should display today later - user', () => {
612
+ let ele = renderer.create(
613
+ <I18NProvider
614
+ i18n={{
615
+ today: 'today',
616
+ yesterday: 'yesterday',
617
+ 'today.later': '{0}:{1}:{2} later'
618
+ }}
619
+ timeZone='Asia/Kolkata'
620
+ >
621
+ <UserTimeDiffFormat
622
+ to='2016-10-25T05:55:29.000Z'
623
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
624
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
625
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
626
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
627
+ ago='ago'
628
+ later='later'
629
+ />
630
+ </I18NProvider>
631
+ );
632
+ let tree = ele.toJSON();
633
+ expect(tree).toMatchSnapshot();
634
+ });
635
+ it('Should display today ago - user', () => {
636
+ let ele = renderer.create(
637
+ <I18NProvider
638
+ i18n={{
639
+ today: 'today',
640
+ yesterday: 'yesterday',
641
+ 'today.later': '{0}:{1}:{2} later',
642
+ 'today.ago': '{0}:{1}:{2} ago'
643
+ }}
644
+ timeZone='Asia/Kolkata'
645
+ >
646
+ <UserTimeDiffFormat
647
+ to='2016-10-25T05:55:27.000Z'
648
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
649
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
650
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
651
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
652
+ ago='ago'
653
+ later='later'
654
+ />
655
+ </I18NProvider>
656
+ );
657
+ let tree = ele.toJSON();
658
+ expect(tree).toMatchSnapshot();
659
+ });
660
+
661
+ it('task due date set - today [hh:mm:AM/PM]', () => {
662
+ let ele = renderer.create(
663
+ <I18NProvider
664
+ i18n={{
665
+ today: 'today',
666
+ yesterday: 'yesterday',
667
+ 'year.day': 'late by 1year 1day',
668
+ 'nyear.day': 'late by {0}years 1day',
669
+ 'nyear.nday': 'late by {0}years {1}days',
670
+ 'year.nday': 'late by 1year {0}days',
671
+ 'day.hour': 'late by 1day 1hour',
672
+ 'nday.hour': 'late by {0}days 1hour',
673
+ 'nday.nhour': 'late by {0}days {1}hours',
674
+ 'day.nhour': 'late by 1day {0}hours',
675
+ 'hour.minute': 'late by 1hour 1minute',
676
+ 'nhour.minute': 'late by {0}hours 1minute',
677
+ 'nhour.nminute': 'late by {0}hours {1}minutes',
678
+ 'hour.nminute': 'late by 1hour {0}minutes',
679
+ minute: 'late by 1minute',
680
+ nminute: 'late by {0}minutes',
681
+ year: 'late by 1year',
682
+ nyear: 'late by {0}years',
683
+ day: 'late by 1day',
684
+ nday: 'late by {0} days',
685
+ hour: 'late by 1hour',
686
+ nhours: 'late by {0}hours'
687
+ }}
688
+ timeZone='Asia/Kolkata'
689
+ >
690
+ <App />
691
+ </I18NProvider>
692
+ );
693
+ function App() {
694
+ return (
695
+ <UserTimeDiffFormat
696
+ to='2015-10-25T05:55:28.000Z'
697
+ toTimeZone='Asia/Kolkata'
698
+ today={'[today] hh:mm A'}
699
+ yesterday={'dd:MM:YYYY hh:mm A'}
700
+ tomorrow={'[tommorrow] hh:mm A'}
701
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
702
+ ago='ago'
703
+ later='later'
704
+ title={i18NProviderUtils.userDateFormat(
705
+ '2015-10-27T05:55:28.000Z',
706
+ {},
707
+ '',
708
+ 'later',
709
+ true,
710
+ (diffObj, pattern) => {
711
+ let getDateI18NString = {
712
+ '1100': { key: 'year.day', params: ['yy', 'yDays'] },
713
+ '2100': { key: 'nyear.day', params: ['yy', 'yDays'] },
714
+ '2200': { key: 'nyear.nday', params: ['yy', 'yDays'] },
715
+ '1200': { key: 'year.nday', params: ['yDays'] },
716
+ '0110': { key: 'day.hour', params: ['yDays', 'hh'] },
717
+ '0210': { key: 'nday.hour', params: ['yDays', 'hh'] },
718
+ '0220': { key: 'nday.nhour', params: ['yDays', 'hh'] },
719
+ '0120': { key: 'day.nhour', params: ['hh'] },
720
+ '0011': { key: 'hour.minute', params: ['hh', 'mm'] },
721
+ '0021': { key: 'nhour.minute', params: ['hh', 'mm'] },
722
+ '0022': { key: 'nhour.nminute', params: ['hh', 'mm'] },
723
+ '0012': { key: 'hour.nminute', params: ['mm'] },
724
+ '0001': { key: 'minute', params: ['mm'] },
725
+ '0002': { key: 'nminute', params: ['mm'] },
726
+ '1000': { key: 'year', params: ['yy'] },
727
+ '2000': { key: 'nyear', params: ['yy'] },
728
+ '0100': { key: 'day', params: ['yDays'] },
729
+ '0200': { key: 'nday', params: ['yDays'] },
730
+ '0010': { key: 'hour', params: ['hh'] },
731
+ '0020': { key: 'nhours', params: ['hh'] }
732
+
733
+ // '0000': 'support.label.just.now',
734
+ // '0001': 'support.1minute',
735
+ // '0002': 'support.nminutes',
736
+ // '0010': 'support.1hour',
737
+ // '0011': 'support.1hour.1minute',
738
+ // '0012': 'support.1hour.nminutes',
739
+ // '0020': 'support.nhours',
740
+ // '0021': 'support.nhours.1minute',
741
+ // '0022': 'support.nhours.nminutes',
742
+ // '0100': 'support.1day',
743
+ // '0110': 'support.1day.1hour',
744
+ // '0120': 'support.1day.nhours',
745
+ // '0200': 'support.ndays',
746
+ // '0210': 'support.ndays.1hour',
747
+ // '0220': 'support.ndays.nhours',
748
+ // '1000': 'support.1year',
749
+ // '1100': 'support.1year.1day',
750
+ // '1200': 'support.1year.ndays',
751
+ // '2000': 'support.nyears',
752
+ // '2100': 'support.nyears.1day',
753
+ // '2200': 'support.nyears.ndays'
754
+ };
755
+ return getDateI18NString[pattern]
756
+ ? getDateI18NString[pattern]
757
+ : 'hh:mm A';
758
+ // console.log(pattern, '===========>>>>pattern');
759
+ // let { years, months, yDays: days, hours, minutes } = diffObj;
760
+ // if (years == 1 && days == 1) {
761
+ // return { key: 'year.day', pattern: ['YY', 'DD'] };
762
+ // } else if (years > 1 && days == 1) {
763
+ // return { key: 'nyear.day', pattern: ['YY', 'DD'] };
764
+ // } else if (years > 1 && days > 1) {
765
+ // return { key: 'nyear.nday', pattern: ['YY', 'DD'] };
766
+ // } else if (years == 1 && days > 1) {
767
+ // return { key: 'year.nday', pattern: ['DD'] };
768
+ // } else if (days == 1 && hours == 1) {
769
+ // return { key: 'day.hour', pattern: ['DD', 'hh'] };
770
+ // } else if (days > 1 && hours == 1) {
771
+ // return { key: 'nday.hour', pattern: ['DD', 'hh'] };
772
+ // } else if (days > 1 && hours > 1) {
773
+ // return { key: 'nday.nhour', pattern: ['DD', 'hh'] };
774
+ // } else if (days == 1 && hours > 1) {
775
+ // return { key: 'day.nhour', pattern: ['hh'] };
776
+ // } else if (hours == 1 && minutes == 1) {
777
+ // return { key: 'hour.minute', pattern: ['hh', 'mm'] };
778
+ // } else if (hours > 1 && minutes == 1) {
779
+ // return { key: 'nhour.minute', pattern: ['hh', 'mm'] };
780
+ // } else if (hours > 1 && minutes > 1) {
781
+ // return { key: 'nhour.nminute', pattern: ['hh', 'mm'] };
782
+ // } else if (hours == 1 && minutes > 1) {
783
+ // return { key: 'hour.nminute', pattern: ['mm'] };
784
+ // } else if (minutes == 1) {
785
+ // return { key: 'minute', pattern: ['mm'] };
786
+ // } else if (minutes > 1) {
787
+ // return { key: 'nminute', pattern: ['mm'] };
788
+ // } else if (years == 1) {
789
+ // return { key: 'year', pattern: ['YY'] };
790
+ // } else if (years > 1) {
791
+ // return { key: 'nyear', pattern: ['YY'] };
792
+ // } else {
793
+ // return 'hh:mm A';
794
+ // }
795
+ }
796
+ )}
797
+ />
798
+ );
799
+ }
800
+ let tree = ele.toJSON();
801
+ expect(tree).toMatchSnapshot();
802
+ });
803
+
804
+ it('task due date set - tomorrow [hh:mm:AM/PM]', () => {
805
+ let ele = renderer.create(
806
+ <I18NProvider
807
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
808
+ timeZone='Asia/Kolkata'
809
+ >
810
+ <UserTimeDiffFormat
811
+ to='2016-10-26T04:55:28.000Z'
812
+ toTimeZone='Asia/Kolkata'
813
+ today={'[today] hh:mm A'}
814
+ yesterday={'dd:MM:YYYY hh:mm A'}
815
+ tomorrow={'[tommorrow] hh:mm A'}
816
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
817
+ ago='ago'
818
+ later='later'
819
+ />
820
+ </I18NProvider>
821
+ );
822
+ let tree = ele.toJSON();
823
+ expect(tree).toMatchSnapshot();
824
+ });
825
+ it('task due date set - yesterday dd:MM:YYYY hh:mm:A', () => {
826
+ let ele = renderer.create(
827
+ <I18NProvider
828
+ i18n={{ today: 'today', yesterday: 'yesterday' }}
829
+ timeZone='Asia/Kolkata'
830
+ >
831
+ <UserTimeDiffFormat
832
+ to='2016-10-24T06:55:28.000Z'
833
+ toTimeZone='Asia/Kolkata'
834
+ today={'[today] hh:mm A'}
835
+ yesterday={'DD/MM/YYYY hh:mm A'}
836
+ tomorrow={'[tommorrow] hh:mm A'}
837
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
838
+ ago='ago'
839
+ later='later'
840
+ />
841
+ </I18NProvider>
842
+ );
843
+ let tree = ele.toJSON();
844
+ expect(tree).toMatchSnapshot();
845
+ });
846
+
847
+ it('task due date set - overdue', () => {
848
+ let ele = renderer.create(
849
+ <I18NProvider
850
+ i18n={{ 'overdue.ago': 'late by {0}' }}
851
+ timeZone='Asia/Kolkata'
852
+ >
853
+ <UserTimeDiffFormat
854
+ to='2016-10-24T05:55:28.000Z'
855
+ toTimeZone='Asia/Kolkata'
856
+ format={(diff, pattern) => {
857
+ switch (pattern) {
858
+ case '000000':
859
+ case '000001':
860
+ case '000002':
861
+ case '000010':
862
+ case '000011':
863
+ case '000012':
864
+ case '000022':
865
+ case '000100':
866
+ case '000101':
867
+ case '000102':
868
+ case '000110':
869
+ case '000111':
870
+ case '000112':
871
+ case '000120':
872
+ case '000121':
873
+ case '000122':
874
+ case '000200':
875
+ return {
876
+ key: 'overdue',
877
+ params: ['dd']
878
+ };
879
+ }
880
+ }}
881
+ ago='ago'
882
+ later='later'
883
+ />
884
+ </I18NProvider>
885
+ );
886
+ let tree = ele.toJSON();
887
+ expect(tree).toMatchSnapshot();
888
+ });
889
+ //2016-10-25T05:55:28.000Z
890
+ it('created time today', () => {
891
+ let ele = renderer.create(
892
+ <I18NProvider
893
+ i18n={{ 'overdue.ago': 'late by {0}' }}
894
+ timeZone='Asia/Kolkata'
895
+ >
896
+ <UserTimeDiffFormat
897
+ to='2016-10-25T06:55:28.000Z'
898
+ today={'hh:mm A'}
899
+ yesterday={'DD/MM/YYYY hh:mm A'}
900
+ tomorrow={'[tommorrow] hh:mm A'}
901
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
902
+ ago='ago'
903
+ later='later'
904
+ />
905
+ </I18NProvider>
906
+ );
907
+ let tree = ele.toJSON();
908
+ expect(tree).toMatchSnapshot();
909
+ });
910
+ it('created time yesterday', () => {
911
+ let ele = renderer.create(
912
+ <I18NProvider
913
+ i18n={{ 'overdue.ago': 'late by {0}' }}
914
+ timeZone='Asia/Kolkata'
915
+ >
916
+ <UserTimeDiffFormat
917
+ to='2016-10-24T06:55:28.000Z'
918
+ today={'hh:mm A'}
919
+ yesterday={'[yesterday] hh:mm A'}
920
+ tomorrow={'[tommorrow] hh:mm A'}
921
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
922
+ ago='ago'
923
+ later='later'
924
+ />
925
+ </I18NProvider>
926
+ );
927
+ let tree = ele.toJSON();
928
+ expect(tree).toMatchSnapshot();
929
+ });
930
+ it('created time tomorrow', () => {
931
+ let ele = renderer.create(
932
+ <I18NProvider
933
+ i18n={{ 'overdue.ago': 'late by {0}' }}
934
+ timeZone='Asia/Kolkata'
935
+ >
936
+ <UserTimeDiffFormat
937
+ to='2016-10-26T06:55:28.000Z'
938
+ today={'hh:mm A'}
939
+ yesterday={'[yesterday] hh:mm A'}
940
+ tomorrow={'[tommorrow] hh:mm A'}
941
+ others={({ years, days, hours, minutes }) => 'DD-MM-YYYY'}
942
+ ago='ago'
943
+ later='later'
944
+ />
945
+ </I18NProvider>
946
+ );
947
+ let tree = ele.toJSON();
948
+ expect(tree).toMatchSnapshot();
949
+ });
950
+ it('created time within 7 days', () => {
951
+ let ele = renderer.create(
952
+ <I18NProvider
953
+ i18n={{
954
+ 'overdue.ago': 'late by {0}',
955
+ 'support.ndays.nhours.ago': '{0} days {1} hours ago',
956
+ 'support.ndays.1hour.ago': '{0} days one hour ago'
957
+ }}
958
+ timeZone='Asia/Kolkata'
959
+ >
960
+ <UserTimeDiffFormat
961
+ to='2016-10-19T06:55:28.000Z'
962
+ today={'hh:mm A'}
963
+ yesterday={'[yesterday] hh:mm A'}
964
+ tomorrow={'[tommorrow] hh:mm A'}
965
+ others={({ years, months, days, hours, minutes, yDays }) => {
966
+ years = years > 1 ? '2' : years;
967
+ // months = diffObj1.months > 1 ? '2' : diffObj1.months;
968
+ //days = diffObj1.days > 1 ? '2' : diffObj1.days;
969
+ days = yDays > 1 ? '2' : yDays;
970
+ hours = hours > 1 ? '2' : hours;
971
+ minutes = minutes > 1 ? '2' : minutes;
972
+ //seconds = diffObj1.seconds > 1 ? '2' : diffObj1.seconds;
973
+ // let pattern = '' + years + months + days + hours + minutes + seconds;
974
+ let count = 0;
975
+ let pattern = [years, days, hours, minutes].reduce((res, next) => {
976
+ if (count == 2) {
977
+ res = `${res}0`;
978
+ } else if (next != 0) {
979
+ count++;
980
+ res = res + next;
981
+ } else {
982
+ res = res + next;
983
+ }
984
+ return res;
985
+ }, '');
986
+ let getDateI18NString = {
987
+ '0000': 'support.label.just.now',
988
+ '0001': 'support.1minute',
989
+ '0002': 'support.nminutes',
990
+ '0010': 'support.1hour',
991
+ '0011': 'support.1hour.1minute',
992
+ '0012': 'support.1hour.nminutes',
993
+ '0020': 'support.nhours',
994
+ '0021': 'support.nhours.1minute',
995
+ '0022': 'support.nhours.nminutes',
996
+ '0100': 'support.1day',
997
+ '0110': 'support.1day.1hour',
998
+ '0120': 'support.1day.nhours',
999
+ '0200': 'support.ndays',
1000
+ '0210': 'support.ndays.1hour',
1001
+ '0220': 'support.ndays.nhours',
1002
+ '1000': 'support.1year',
1003
+ '1100': 'support.1year.1day',
1004
+ '1200': 'support.1year.ndays',
1005
+ '2000': 'support.nyears',
1006
+ '2100': 'support.nyears.1day',
1007
+ '2200': 'support.nyears.ndays'
1008
+ };
1009
+ if (years == 0 && months == 0 && days < 7) {
1010
+ return {
1011
+ key: getDateI18NString[pattern],
1012
+ params: ['d', 'h']
1013
+ };
1014
+ }
1015
+ }}
1016
+ ago='ago'
1017
+ later='later'
1018
+ />
1019
+ </I18NProvider>
1020
+ );
1021
+ let tree = ele.toJSON();
1022
+ expect(tree).toMatchSnapshot();
1023
+ });
1024
+
1025
+ it('created time within pattern', () => {
1026
+ let ele = renderer.create(
1027
+ <I18NProvider
1028
+ i18n={{
1029
+ 'overdue.ago': 'late by {0}',
1030
+ 'support.ndays.nhours.ago': '{0} days {1} hours ago',
1031
+ 'support.ndays.1hour.ago': '{0} days one hour ago'
1032
+ }}
1033
+ timeZone='Asia/Kolkata'
1034
+ >
1035
+ <UserTimeDiffFormat
1036
+ to='2016-10-19T06:55:28.000Z'
1037
+ format={({ years, months, days, hours, minutes, yDays }, pattern) => {
1038
+ let getDateI18NString = {
1039
+ '0000': 'support.label.just.now',
1040
+ '0001': 'support.1minute',
1041
+ '0002': 'support.nminutes',
1042
+ '0010': 'support.1hour',
1043
+ '0011': 'support.1hour.1minute',
1044
+ '0012': 'support.1hour.nminutes',
1045
+ '0020': 'support.nhours',
1046
+ '0021': 'support.nhours.1minute',
1047
+ '0022': 'support.nhours.nminutes',
1048
+ '0100': 'support.1day',
1049
+ '0110': 'support.1day.1hour',
1050
+ '0120': 'support.1day.nhours',
1051
+ '0200': 'support.ndays',
1052
+ '0210': 'support.ndays.1hour',
1053
+ '0220': 'support.ndays.nhours',
1054
+ '1000': 'support.1year',
1055
+ '1100': 'support.1year.1day',
1056
+ '1200': 'support.1year.ndays',
1057
+ '2000': 'support.nyears',
1058
+ '2100': 'support.nyears.1day',
1059
+ '2200': 'support.nyears.ndays'
1060
+ };
1061
+ if (years == 0 && months == 0 && days < 7) {
1062
+ return {
1063
+ key: getDateI18NString[pattern],
1064
+ params: ['d', 'h']
1065
+ };
1066
+ }
1067
+ }}
1068
+ ago='ago'
1069
+ later='later'
1070
+ />
1071
+ </I18NProvider>
1072
+ );
1073
+ let tree = ele.toJSON();
1074
+ expect(tree).toMatchSnapshot();
1075
+ });
1076
+ });