@zohodesk/i18n 1.0.0-beta.15.1 → 1.0.0-beta.18

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 (67) hide show
  1. package/README.md +73 -41
  2. package/es/components/DateTimeDiffFormat.js +46 -12
  3. package/es/components/HOCI18N.js +33 -30
  4. package/es/components/I18NProvider.js +7 -16
  5. package/es/components/UserTimeDiffFormat.js +11 -9
  6. package/es/components/__tests__/DateTimeDiffFormat.spec.js +177 -136
  7. package/es/components/__tests__/FormatText.spec.js +0 -1
  8. package/es/components/__tests__/HOCI18N.spec.js +0 -1
  9. package/es/components/__tests__/I18N.spec.js +0 -2
  10. package/es/components/__tests__/I18NProvider.spec.js +0 -1
  11. package/es/components/__tests__/PluralFormat.spec.js +0 -1
  12. package/es/components/__tests__/UserTimeDiffFormat.spec.js +287 -206
  13. package/es/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  14. package/es/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  15. package/es/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  16. package/es/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  17. package/es/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  18. package/es/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  19. package/es/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  20. package/es/index.js +2 -3
  21. package/es/utils.js +119 -171
  22. package/lib/components/DateTimeDiffFormat.js +49 -15
  23. package/lib/components/FormatText.js +4 -4
  24. package/lib/components/HOCI18N.js +4 -4
  25. package/lib/components/I18N.js +4 -4
  26. package/lib/components/I18NProvider.js +12 -21
  27. package/lib/components/PluralFormat.js +4 -4
  28. package/lib/components/UserTimeDiffFormat.js +12 -14
  29. package/lib/components/__tests__/I18NProvider.spec.js +1 -1
  30. package/lib/components/__tests__/UserTimeDiffFormat.spec.js +1 -1
  31. package/lib/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  32. package/lib/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  33. package/lib/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  34. package/lib/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  35. package/lib/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  36. package/lib/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  37. package/lib/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  38. package/lib/index.js +54 -56
  39. package/lib/utils.js +130 -212
  40. package/package.json +28 -28
  41. package/src/I18NContext.js +2 -2
  42. package/src/components/DateTimeDiffFormat.js +254 -211
  43. package/src/components/FormatText.js +14 -14
  44. package/src/components/HOCI18N.js +37 -37
  45. package/src/components/I18N.js +72 -72
  46. package/src/components/I18NProvider.js +106 -116
  47. package/src/components/PluralFormat.js +37 -37
  48. package/src/components/UserTimeDiffFormat.js +94 -103
  49. package/src/components/__tests__/DateTimeDiffFormat.spec.js +618 -618
  50. package/src/components/__tests__/FormatText.spec.js +26 -26
  51. package/src/components/__tests__/HOCI18N.spec.js +33 -33
  52. package/src/components/__tests__/I18N.spec.js +29 -29
  53. package/src/components/__tests__/I18NProvider.spec.js +65 -65
  54. package/src/components/__tests__/PluralFormat.spec.js +27 -27
  55. package/src/components/__tests__/UserTimeDiffFormat.spec.js +1076 -1076
  56. package/src/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  57. package/src/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  58. package/src/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  59. package/src/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  60. package/src/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  61. package/src/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  62. package/src/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  63. package/src/index.js +33 -33
  64. package/src/utils.js +527 -587
  65. package/es/components/NewDateFormat.js +0 -53
  66. package/lib/components/NewDateFormat.js +0 -60
  67. package/src/components/NewDateFormat.js +0 -60
@@ -1,618 +1,618 @@
1
- import DateTimeDiffFormat from '../DateTimeDiffFormat';
2
- import I18NProvider from '../I18NProvider';
3
- import React from 'react';
4
- import renderer from 'react-test-renderer';
5
-
6
- let tzData = {
7
- offsets: [154, 180],
8
- untils: [1013911200000, null]
9
- };
10
-
11
- let fromTzData = tzData,
12
- toTzData = tzData;
13
-
14
- describe('DateTimeDiffFormat component', () => {
15
- it('Should display yesterday - with same time', () => {
16
- let ele = renderer.create(
17
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
18
- <DateTimeDiffFormat
19
- from='2016-10-25T06:55:28.000Z'
20
- fromTzData={fromTzData}
21
- to='2016-10-24T05:55:28.000Z'
22
- toTzData={toTzData}
23
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
24
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
25
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
26
- others={({ years, days, hours, minutes }) => {
27
- if (days > 7) {
28
- return 'DD-MM-YYYY';
29
- }
30
- return getDateKeyWithParam(years, days, hours, minutes);
31
- }}
32
- ago='ago'
33
- later='later'
34
- />
35
- </I18NProvider>
36
- );
37
- let tree = ele.toJSON();
38
- expect(tree).toMatchSnapshot();
39
- });
40
- it('Should display yesterday - less than 24 hour', () => {
41
- let ele = renderer.create(
42
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
43
- <DateTimeDiffFormat
44
- from='2016-10-25T05:55:28.000Z'
45
- fromTzData={fromTzData}
46
- to='2016-10-24T06:55:28.000Z'
47
- toTzData={toTzData}
48
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
49
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
50
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
51
- others={({ years, days, hours, minutes }) => {
52
- if (days > 7) {
53
- return 'DD-MM-YYYY';
54
- }
55
- return getDateKeyWithParam(years, days, hours, minutes);
56
- }}
57
- ago='ago'
58
- later='later'
59
- />
60
- </I18NProvider>
61
- );
62
- let tree = ele.toJSON();
63
- expect(tree).toMatchSnapshot();
64
- });
65
- it('Should display yesterday - greater than 24 hour', () => {
66
- let ele = renderer.create(
67
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
68
- <DateTimeDiffFormat
69
- from='2016-10-25T05:55:28.000Z'
70
- fromTzData={fromTzData}
71
- to='2016-10-24T04:55:28.000Z'
72
- toTzData={toTzData}
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 }) => {
77
- if (days > 7) {
78
- return 'DD-MM-YYYY';
79
- }
80
- return getDateKeyWithParam(years, days, hours, minutes);
81
- }}
82
- ago='ago'
83
- later='later'
84
- />
85
- </I18NProvider>
86
- );
87
- let tree = ele.toJSON();
88
- expect(tree).toMatchSnapshot();
89
- });
90
- it('Should display today key - same time', () => {
91
- let ele = renderer.create(
92
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
93
- <DateTimeDiffFormat
94
- from='2016-10-25T05:55:28.000Z'
95
- fromTzData={fromTzData}
96
- to='2016-10-25T05:55:28.000Z'
97
- toTzData={toTzData}
98
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
99
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
100
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
101
- others={({ years, days, hours, minutes }) => {
102
- if (days > 7) {
103
- return 'DD-MM-YYYY';
104
- }
105
- return getDateKeyWithParam(years, days, hours, minutes);
106
- }}
107
- ago='ago'
108
- later='later'
109
- />
110
- </I18NProvider>
111
- );
112
- let tree = ele.toJSON();
113
- expect(tree).toMatchSnapshot();
114
- });
115
-
116
- it('Should display today key - less than 24 hour', () => {
117
- let ele = renderer.create(
118
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
119
- <DateTimeDiffFormat
120
- from='2016-10-25T05:55:28.000Z'
121
- fromTzData={fromTzData}
122
- to='2016-10-25T04:55:28.000Z'
123
- toTzData={toTzData}
124
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
125
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
126
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
127
- others={({ years, days, hours, minutes }) => {
128
- if (days > 7) {
129
- return 'DD-MM-YYYY';
130
- }
131
- return getDateKeyWithParam(years, days, hours, minutes);
132
- }}
133
- ago='ago'
134
- later='later'
135
- />
136
- </I18NProvider>
137
- );
138
- let tree = ele.toJSON();
139
- expect(tree).toMatchSnapshot();
140
- });
141
- it('Should display today key - greater than 24 hour', () => {
142
- let ele = renderer.create(
143
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
144
- <DateTimeDiffFormat
145
- from='2016-10-25T05:55:28.000Z'
146
- fromTzData={fromTzData}
147
- to='2016-10-25T06:55:28.000Z'
148
- toTzData={toTzData}
149
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
150
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
151
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
152
- others={({ years, days, hours, minutes }) => {
153
- if (days > 7) {
154
- return 'DD-MM-YYYY';
155
- }
156
- return getDateKeyWithParam(years, days, hours, minutes);
157
- }}
158
- ago='ago'
159
- later='later'
160
- />
161
- </I18NProvider>
162
- );
163
- let tree = ele.toJSON();
164
- expect(tree).toMatchSnapshot();
165
- });
166
- it('Should display tomorrow key - same time', () => {
167
- let ele = renderer.create(
168
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
169
- <DateTimeDiffFormat
170
- from='2016-10-25T05:55:28.000Z'
171
- fromTzData={fromTzData}
172
- to='2016-10-26T05:55:28.000Z'
173
- toTzData={toTzData}
174
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
175
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
176
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
177
- others={({ years, days, hours, minutes }) => {
178
- if (days > 7) {
179
- return 'DD-MM-YYYY';
180
- }
181
- return getDateKeyWithParam(years, days, hours, minutes);
182
- }}
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 - less than 24 hour', () => {
192
- let ele = renderer.create(
193
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
194
- <DateTimeDiffFormat
195
- from='2016-10-25T05:55:28.000Z'
196
- fromTzData={fromTzData}
197
- to='2016-10-26T04:55:28.000Z'
198
- toTzData={toTzData}
199
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
200
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
201
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
202
- others={({ years, days, hours, minutes }) => {
203
- if (days > 7) {
204
- return 'DD-MM-YYYY';
205
- }
206
- return getDateKeyWithParam(years, days, hours, minutes);
207
- }}
208
- ago='ago'
209
- later='later'
210
- />
211
- </I18NProvider>
212
- );
213
- let tree = ele.toJSON();
214
- expect(tree).toMatchSnapshot();
215
- });
216
- it('Should display tomorrow key - greater than 24 hour', () => {
217
- let ele = renderer.create(
218
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
219
- <DateTimeDiffFormat
220
- from='2016-10-25T05:55:28.000Z'
221
- fromTzData={fromTzData}
222
- to='2016-10-26T06:55:28.000Z'
223
- toTzData={toTzData}
224
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
225
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
226
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
227
- others={({ years, days, hours, minutes }) => {
228
- if (days > 7) {
229
- return 'DD-MM-YYYY';
230
- }
231
- return getDateKeyWithParam(years, days, hours, minutes);
232
- }}
233
- ago='ago'
234
- later='later'
235
- />
236
- </I18NProvider>
237
- );
238
- let tree = ele.toJSON();
239
- expect(tree).toMatchSnapshot();
240
- });
241
- it('Should display other - same time', () => {
242
- let ele = renderer.create(
243
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
244
- <DateTimeDiffFormat
245
- from='2016-10-25T05:55:28.000Z'
246
- fromTzData={fromTzData}
247
- to='2016-10-23T05:55:28.000Z'
248
- toTzData={toTzData}
249
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
250
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
251
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
252
- others={({ years, days, hours, minutes, suffix }) => {
253
- if (days > 7) {
254
- return 'DD-MM-YYYY';
255
- }
256
- return '[less 7] DD-MM-YYYY';
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 - greater time', () => {
267
- let ele = renderer.create(
268
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
269
- <DateTimeDiffFormat
270
- from='2016-10-25T05:55:28.000Z'
271
- fromTzData={fromTzData}
272
- to='2016-10-23T06:55:28.000Z'
273
- toTzData={toTzData}
274
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
275
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
276
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
277
- others={({ years, days, hours, minutes, suffix }) => {
278
- if (days > 7) {
279
- return 'DD-MM-YYYY';
280
- }
281
- return '[less 7] DD-MM-YYYY';
282
- }}
283
- ago='ago'
284
- later='later'
285
- />
286
- </I18NProvider>
287
- );
288
- let tree = ele.toJSON();
289
- expect(tree).toMatchSnapshot();
290
- });
291
- it('Should display other - less time', () => {
292
- let ele = renderer.create(
293
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
294
- <DateTimeDiffFormat
295
- from='2016-10-25T05:55:28.000Z'
296
- fromTzData={fromTzData}
297
- to='2016-10-23T04:55:28.000Z'
298
- toTzData={toTzData}
299
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
300
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
301
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
302
- others={({ years, days, hours, minutes, suffix }) => {
303
- if (days > 7) {
304
- return 'DD-MM-YYYY';
305
- }
306
- return '[less 7] DD-MM-YYYY';
307
- }}
308
- ago='ago'
309
- later='later'
310
- />
311
- </I18NProvider>
312
- );
313
- let tree = ele.toJSON();
314
- expect(tree).toMatchSnapshot();
315
- });
316
- it('Should display other later- same time', () => {
317
- let ele = renderer.create(
318
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
319
- <DateTimeDiffFormat
320
- from='2016-10-25T05:55:28.000Z'
321
- fromTzData={fromTzData}
322
- to='2016-10-27T05:55:28.000Z'
323
- toTzData={toTzData}
324
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
325
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
326
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
327
- others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
328
- if (days > 7) {
329
- return 'DD-MM-YYYY';
330
- }
331
- return '[less 7] DD-MM-YYYY';
332
- }}
333
- ago='ago'
334
- later='later'
335
- />
336
- </I18NProvider>
337
- );
338
- let tree = ele.toJSON();
339
- expect(tree).toMatchSnapshot();
340
- });
341
- it('Should display other later- less time', () => {
342
- let ele = renderer.create(
343
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
344
- <DateTimeDiffFormat
345
- from='2016-10-25T05:55:28.000Z'
346
- fromTzData={fromTzData}
347
- to='2016-10-27T06:55:28.000Z'
348
- toTzData={toTzData}
349
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
350
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
351
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
352
- others={({ years, days, hours, minutes, suffix }) => {
353
- if (days > 7) {
354
- return 'DD-MM-YYYY';
355
- }
356
- return '[less 7] DD-MM-YYYY';
357
- }}
358
- ago='ago'
359
- later='later'
360
- />
361
- </I18NProvider>
362
- );
363
- let tree = ele.toJSON();
364
- expect(tree).toMatchSnapshot();
365
- });
366
- it('Should display other later- less time', () => {
367
- let ele = renderer.create(
368
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
369
- <DateTimeDiffFormat
370
- from='2016-10-25T05:55:28.000Z'
371
- fromTzData={fromTzData}
372
- to='2016-10-27T04:55:28.000Z'
373
- toTzData={toTzData}
374
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
375
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
376
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
377
- others={({ years, days, hours, minutes, suffix }) => {
378
- if (days > 7) {
379
- return 'DD-MM-YYYY';
380
- }
381
- return '[less 7] DD-MM-YYYY';
382
- }}
383
- ago='ago'
384
- later='later'
385
- />
386
- </I18NProvider>
387
- );
388
- let tree = ele.toJSON();
389
- expect(tree).toMatchSnapshot();
390
- });
391
- it('Should display others', () => {
392
- let ele = renderer.create(
393
- <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
394
- <DateTimeDiffFormat
395
- from='2016-10-25T05:55:28.000Z'
396
- fromTzData={fromTzData}
397
- to='2016-11-27T05:55:28.000Z'
398
- toTzData={toTzData}
399
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
400
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
401
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
402
- others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
403
- if (days > 7) {
404
- return 'DD-MM-YYYY';
405
- }
406
- return '[less 7] DD-MM-YYYY';
407
- }}
408
- ago='ago'
409
- later='later'
410
- />
411
- </I18NProvider>
412
- );
413
- let tree = ele.toJSON();
414
- expect(tree).toMatchSnapshot();
415
- });
416
-
417
- it('Should display today1', () => {
418
- let toDates = [
419
- '2016-10-24T05:55:28.000Z',
420
- '2016-10-24T06:55:28.000Z',
421
- '2016-10-24T04:55:28.000Z',
422
- '2016-10-25T05:55:28.000Z',
423
- '2016-10-25T04:55:28.000Z',
424
- '2016-10-25T06:55:28.000Z',
425
- '2016-10-26T05:55:28.000Z',
426
- '2016-10-26T04:55:28.000Z',
427
- '2016-10-26T06:55:28.000Z',
428
- '2016-10-23T05:55:28.000Z',
429
- '2016-10-23T04:55:28.000Z',
430
- '2016-10-23T06:55:28.000Z'
431
- ];
432
- let ele = renderer.create(
433
- <I18NProvider
434
- i18n={{
435
- today: 'today',
436
- yesterday: 'yesterday',
437
- now: 'noooow',
438
- 'support.1day.ago': '1day ago',
439
- 'support.1day.nhours.ago': 'one day {0} hours ago',
440
- 'support.1min.ago': '1min ago',
441
- 'support.nmins.ago': '{0} mins ago'
442
- }}
443
- >
444
- <div>
445
- {toDates.map((to, i) => (
446
- <DateTimeDiffFormat
447
- key={i}
448
- from='2016-10-25T05:55:28.000Z'
449
- fromTzData={fromTzData}
450
- to={to}
451
- toTzData={toTzData}
452
- format={({ years, days, months, hours }, pattern) => {
453
- switch (pattern) {
454
- case '000000':
455
- case '000001':
456
- case '000002':
457
- return {
458
- key: 'now'
459
- };
460
- break;
461
- case '000010':
462
- return {
463
- key: 'support.1min'
464
- };
465
- break;
466
- case '000020':
467
- return {
468
- key: 'support.nmins',
469
- params: ['m']
470
- };
471
- break;
472
- case '001000':
473
- case '001100':
474
- return {
475
- key: 'support.1day'
476
- };
477
- break;
478
- case '001200':
479
- case '001201':
480
- return {
481
- key: 'support.1day.nhours',
482
- params: ['h']
483
- };
484
- break;
485
- }
486
- }}
487
- ago='ago'
488
- later='later'
489
- />
490
- ))}
491
- </div>
492
- </I18NProvider>
493
- );
494
- let tree = ele.toJSON();
495
- expect(tree).toMatchSnapshot();
496
- });
497
- it('Should display today later', () => {
498
- let ele = renderer.create(
499
- <I18NProvider
500
- i18n={{
501
- today: 'today',
502
- yesterday: 'yesterday',
503
- 'today.later': '{0}:{1}:{2} later'
504
- }}
505
- >
506
- <DateTimeDiffFormat
507
- from='2016-10-25T05:55:28.000Z'
508
- fromTzData={fromTzData}
509
- to='2016-10-25T05:55:29.000Z'
510
- toTzData={toTzData}
511
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
512
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
513
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
514
- others={({ years, days, hours, minutes }) => {
515
- if (days > 7) {
516
- return 'DD-MM-YYYY';
517
- }
518
- return getDateKeyWithParam(years, days, hours, minutes);
519
- }}
520
- ago='ago'
521
- later='later'
522
- />
523
- </I18NProvider>
524
- );
525
- let tree = ele.toJSON();
526
- expect(tree).toMatchSnapshot();
527
- });
528
- it('Should display today ago', () => {
529
- let ele = renderer.create(
530
- <I18NProvider
531
- i18n={{
532
- today: 'today',
533
- yesterday: 'yesterday',
534
- 'today.later': '{0}:{1}:{2} later',
535
- 'today.ago': '{0}:{1}:{2} ago'
536
- }}
537
- >
538
- <DateTimeDiffFormat
539
- from='2016-10-25T05:55:30.000Z'
540
- fromTzData={fromTzData}
541
- to='2016-10-25T05:55:29.000Z'
542
- toTzData={toTzData}
543
- today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
544
- yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
545
- tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
546
- others={({ years, days, hours, minutes }) => {
547
- if (days > 7) {
548
- return 'DD-MM-YYYY';
549
- }
550
- return getDateKeyWithParam(years, days, hours, minutes);
551
- }}
552
- ago='ago'
553
- later='later'
554
- />
555
- </I18NProvider>
556
- );
557
- let tree = ele.toJSON();
558
- expect(tree).toMatchSnapshot();
559
- });
560
- it('Should display years and days', () => {
561
- let ele = renderer.create(
562
- <I18NProvider
563
- i18n={{
564
- 'nyear.ndays.ago': '{0} years {1} days ago',
565
- yesterday: 'yesterday'
566
- }}
567
- >
568
- <DateTimeDiffFormat
569
- from='2017-10-25T05:55:28.000Z'
570
- fromTzData={fromTzData}
571
- to='2015-08-25T05:55:28.000Z'
572
- toTzData={toTzData}
573
- format={({ years, days, months, hours }, pattern) => {
574
- if (years > 1) {
575
- return {
576
- key: 'nyear.ndays',
577
- params: ['y', 'days']
578
- };
579
- }
580
- }}
581
- ago='ago'
582
- later='later'
583
- />
584
- </I18NProvider>
585
- );
586
- let tree = ele.toJSON();
587
- expect(tree).toMatchSnapshot();
588
- });
589
- it('Should display years and days1', () => {
590
- let ele = renderer.create(
591
- <I18NProvider
592
- i18n={{
593
- 'nyear.ndays.later': '{0} years {1} days later',
594
- yesterday: 'yesterday'
595
- }}
596
- >
597
- <DateTimeDiffFormat
598
- from='2015-08-25T05:55:28.000Z'
599
- fromTzData={fromTzData}
600
- to='2017-10-25T05:55:28.000Z'
601
- toTzData={toTzData}
602
- format={({ years, days, months, hours }, pattern) => {
603
- if (years > 1) {
604
- return {
605
- key: 'nyear.ndays',
606
- params: ['y', 'days']
607
- };
608
- }
609
- }}
610
- ago='ago'
611
- later='later'
612
- />
613
- </I18NProvider>
614
- );
615
- let tree = ele.toJSON();
616
- expect(tree).toMatchSnapshot();
617
- });
618
- });
1
+ import DateTimeDiffFormat from '../DateTimeDiffFormat';
2
+ import I18NProvider from '../I18NProvider';
3
+ import React from 'react';
4
+ import renderer from 'react-test-renderer';
5
+
6
+ let tzData = {
7
+ offsets: [154, 180],
8
+ untils: [1013911200000, null]
9
+ };
10
+
11
+ let fromTzData = tzData,
12
+ toTzData = tzData;
13
+
14
+ describe('DateTimeDiffFormat component', () => {
15
+ it('Should display yesterday - with same time', () => {
16
+ let ele = renderer.create(
17
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
18
+ <DateTimeDiffFormat
19
+ from='2016-10-25T06:55:28.000Z'
20
+ fromTzData={fromTzData}
21
+ to='2016-10-24T05:55:28.000Z'
22
+ toTzData={toTzData}
23
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
24
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
25
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
26
+ others={({ years, days, hours, minutes }) => {
27
+ if (days > 7) {
28
+ return 'DD-MM-YYYY';
29
+ }
30
+ return getDateKeyWithParam(years, days, hours, minutes);
31
+ }}
32
+ ago='ago'
33
+ later='later'
34
+ />
35
+ </I18NProvider>
36
+ );
37
+ let tree = ele.toJSON();
38
+ expect(tree).toMatchSnapshot();
39
+ });
40
+ it('Should display yesterday - less than 24 hour', () => {
41
+ let ele = renderer.create(
42
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
43
+ <DateTimeDiffFormat
44
+ from='2016-10-25T05:55:28.000Z'
45
+ fromTzData={fromTzData}
46
+ to='2016-10-24T06:55:28.000Z'
47
+ toTzData={toTzData}
48
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
49
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
50
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
51
+ others={({ years, days, hours, minutes }) => {
52
+ if (days > 7) {
53
+ return 'DD-MM-YYYY';
54
+ }
55
+ return getDateKeyWithParam(years, days, hours, minutes);
56
+ }}
57
+ ago='ago'
58
+ later='later'
59
+ />
60
+ </I18NProvider>
61
+ );
62
+ let tree = ele.toJSON();
63
+ expect(tree).toMatchSnapshot();
64
+ });
65
+ it('Should display yesterday - greater than 24 hour', () => {
66
+ let ele = renderer.create(
67
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
68
+ <DateTimeDiffFormat
69
+ from='2016-10-25T05:55:28.000Z'
70
+ fromTzData={fromTzData}
71
+ to='2016-10-24T04:55:28.000Z'
72
+ toTzData={toTzData}
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 }) => {
77
+ if (days > 7) {
78
+ return 'DD-MM-YYYY';
79
+ }
80
+ return getDateKeyWithParam(years, days, hours, minutes);
81
+ }}
82
+ ago='ago'
83
+ later='later'
84
+ />
85
+ </I18NProvider>
86
+ );
87
+ let tree = ele.toJSON();
88
+ expect(tree).toMatchSnapshot();
89
+ });
90
+ it('Should display today key - same time', () => {
91
+ let ele = renderer.create(
92
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
93
+ <DateTimeDiffFormat
94
+ from='2016-10-25T05:55:28.000Z'
95
+ fromTzData={fromTzData}
96
+ to='2016-10-25T05:55:28.000Z'
97
+ toTzData={toTzData}
98
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
99
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
100
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
101
+ others={({ years, days, hours, minutes }) => {
102
+ if (days > 7) {
103
+ return 'DD-MM-YYYY';
104
+ }
105
+ return getDateKeyWithParam(years, days, hours, minutes);
106
+ }}
107
+ ago='ago'
108
+ later='later'
109
+ />
110
+ </I18NProvider>
111
+ );
112
+ let tree = ele.toJSON();
113
+ expect(tree).toMatchSnapshot();
114
+ });
115
+
116
+ it('Should display today key - less than 24 hour', () => {
117
+ let ele = renderer.create(
118
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
119
+ <DateTimeDiffFormat
120
+ from='2016-10-25T05:55:28.000Z'
121
+ fromTzData={fromTzData}
122
+ to='2016-10-25T04:55:28.000Z'
123
+ toTzData={toTzData}
124
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
125
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
126
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
127
+ others={({ years, days, hours, minutes }) => {
128
+ if (days > 7) {
129
+ return 'DD-MM-YYYY';
130
+ }
131
+ return getDateKeyWithParam(years, days, hours, minutes);
132
+ }}
133
+ ago='ago'
134
+ later='later'
135
+ />
136
+ </I18NProvider>
137
+ );
138
+ let tree = ele.toJSON();
139
+ expect(tree).toMatchSnapshot();
140
+ });
141
+ it('Should display today key - greater than 24 hour', () => {
142
+ let ele = renderer.create(
143
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
144
+ <DateTimeDiffFormat
145
+ from='2016-10-25T05:55:28.000Z'
146
+ fromTzData={fromTzData}
147
+ to='2016-10-25T06:55:28.000Z'
148
+ toTzData={toTzData}
149
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
150
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
151
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
152
+ others={({ years, days, hours, minutes }) => {
153
+ if (days > 7) {
154
+ return 'DD-MM-YYYY';
155
+ }
156
+ return getDateKeyWithParam(years, days, hours, minutes);
157
+ }}
158
+ ago='ago'
159
+ later='later'
160
+ />
161
+ </I18NProvider>
162
+ );
163
+ let tree = ele.toJSON();
164
+ expect(tree).toMatchSnapshot();
165
+ });
166
+ it('Should display tomorrow key - same time', () => {
167
+ let ele = renderer.create(
168
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
169
+ <DateTimeDiffFormat
170
+ from='2016-10-25T05:55:28.000Z'
171
+ fromTzData={fromTzData}
172
+ to='2016-10-26T05:55:28.000Z'
173
+ toTzData={toTzData}
174
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
175
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
176
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
177
+ others={({ years, days, hours, minutes }) => {
178
+ if (days > 7) {
179
+ return 'DD-MM-YYYY';
180
+ }
181
+ return getDateKeyWithParam(years, days, hours, minutes);
182
+ }}
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 - less than 24 hour', () => {
192
+ let ele = renderer.create(
193
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
194
+ <DateTimeDiffFormat
195
+ from='2016-10-25T05:55:28.000Z'
196
+ fromTzData={fromTzData}
197
+ to='2016-10-26T04:55:28.000Z'
198
+ toTzData={toTzData}
199
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
200
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
201
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
202
+ others={({ years, days, hours, minutes }) => {
203
+ if (days > 7) {
204
+ return 'DD-MM-YYYY';
205
+ }
206
+ return getDateKeyWithParam(years, days, hours, minutes);
207
+ }}
208
+ ago='ago'
209
+ later='later'
210
+ />
211
+ </I18NProvider>
212
+ );
213
+ let tree = ele.toJSON();
214
+ expect(tree).toMatchSnapshot();
215
+ });
216
+ it('Should display tomorrow key - greater than 24 hour', () => {
217
+ let ele = renderer.create(
218
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
219
+ <DateTimeDiffFormat
220
+ from='2016-10-25T05:55:28.000Z'
221
+ fromTzData={fromTzData}
222
+ to='2016-10-26T06:55:28.000Z'
223
+ toTzData={toTzData}
224
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
225
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
226
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
227
+ others={({ years, days, hours, minutes }) => {
228
+ if (days > 7) {
229
+ return 'DD-MM-YYYY';
230
+ }
231
+ return getDateKeyWithParam(years, days, hours, minutes);
232
+ }}
233
+ ago='ago'
234
+ later='later'
235
+ />
236
+ </I18NProvider>
237
+ );
238
+ let tree = ele.toJSON();
239
+ expect(tree).toMatchSnapshot();
240
+ });
241
+ it('Should display other - same time', () => {
242
+ let ele = renderer.create(
243
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
244
+ <DateTimeDiffFormat
245
+ from='2016-10-25T05:55:28.000Z'
246
+ fromTzData={fromTzData}
247
+ to='2016-10-23T05:55:28.000Z'
248
+ toTzData={toTzData}
249
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
250
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
251
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
252
+ others={({ years, days, hours, minutes, suffix }) => {
253
+ if (days > 7) {
254
+ return 'DD-MM-YYYY';
255
+ }
256
+ return '[less 7] DD-MM-YYYY';
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 - greater time', () => {
267
+ let ele = renderer.create(
268
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
269
+ <DateTimeDiffFormat
270
+ from='2016-10-25T05:55:28.000Z'
271
+ fromTzData={fromTzData}
272
+ to='2016-10-23T06:55:28.000Z'
273
+ toTzData={toTzData}
274
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
275
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
276
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
277
+ others={({ years, days, hours, minutes, suffix }) => {
278
+ if (days > 7) {
279
+ return 'DD-MM-YYYY';
280
+ }
281
+ return '[less 7] DD-MM-YYYY';
282
+ }}
283
+ ago='ago'
284
+ later='later'
285
+ />
286
+ </I18NProvider>
287
+ );
288
+ let tree = ele.toJSON();
289
+ expect(tree).toMatchSnapshot();
290
+ });
291
+ it('Should display other - less time', () => {
292
+ let ele = renderer.create(
293
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
294
+ <DateTimeDiffFormat
295
+ from='2016-10-25T05:55:28.000Z'
296
+ fromTzData={fromTzData}
297
+ to='2016-10-23T04:55:28.000Z'
298
+ toTzData={toTzData}
299
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
300
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
301
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
302
+ others={({ years, days, hours, minutes, suffix }) => {
303
+ if (days > 7) {
304
+ return 'DD-MM-YYYY';
305
+ }
306
+ return '[less 7] DD-MM-YYYY';
307
+ }}
308
+ ago='ago'
309
+ later='later'
310
+ />
311
+ </I18NProvider>
312
+ );
313
+ let tree = ele.toJSON();
314
+ expect(tree).toMatchSnapshot();
315
+ });
316
+ it('Should display other later- same time', () => {
317
+ let ele = renderer.create(
318
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
319
+ <DateTimeDiffFormat
320
+ from='2016-10-25T05:55:28.000Z'
321
+ fromTzData={fromTzData}
322
+ to='2016-10-27T05:55:28.000Z'
323
+ toTzData={toTzData}
324
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
325
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
326
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
327
+ others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
328
+ if (days > 7) {
329
+ return 'DD-MM-YYYY';
330
+ }
331
+ return '[less 7] DD-MM-YYYY';
332
+ }}
333
+ ago='ago'
334
+ later='later'
335
+ />
336
+ </I18NProvider>
337
+ );
338
+ let tree = ele.toJSON();
339
+ expect(tree).toMatchSnapshot();
340
+ });
341
+ it('Should display other later- less time', () => {
342
+ let ele = renderer.create(
343
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
344
+ <DateTimeDiffFormat
345
+ from='2016-10-25T05:55:28.000Z'
346
+ fromTzData={fromTzData}
347
+ to='2016-10-27T06:55:28.000Z'
348
+ toTzData={toTzData}
349
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
350
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
351
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
352
+ others={({ years, days, hours, minutes, suffix }) => {
353
+ if (days > 7) {
354
+ return 'DD-MM-YYYY';
355
+ }
356
+ return '[less 7] DD-MM-YYYY';
357
+ }}
358
+ ago='ago'
359
+ later='later'
360
+ />
361
+ </I18NProvider>
362
+ );
363
+ let tree = ele.toJSON();
364
+ expect(tree).toMatchSnapshot();
365
+ });
366
+ it('Should display other later- less time', () => {
367
+ let ele = renderer.create(
368
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
369
+ <DateTimeDiffFormat
370
+ from='2016-10-25T05:55:28.000Z'
371
+ fromTzData={fromTzData}
372
+ to='2016-10-27T04:55:28.000Z'
373
+ toTzData={toTzData}
374
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
375
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
376
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
377
+ others={({ years, days, hours, minutes, suffix }) => {
378
+ if (days > 7) {
379
+ return 'DD-MM-YYYY';
380
+ }
381
+ return '[less 7] DD-MM-YYYY';
382
+ }}
383
+ ago='ago'
384
+ later='later'
385
+ />
386
+ </I18NProvider>
387
+ );
388
+ let tree = ele.toJSON();
389
+ expect(tree).toMatchSnapshot();
390
+ });
391
+ it('Should display others', () => {
392
+ let ele = renderer.create(
393
+ <I18NProvider i18n={{ today: 'today', yesterday: 'yesterday' }}>
394
+ <DateTimeDiffFormat
395
+ from='2016-10-25T05:55:28.000Z'
396
+ fromTzData={fromTzData}
397
+ to='2016-11-27T05:55:28.000Z'
398
+ toTzData={toTzData}
399
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
400
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
401
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
402
+ others={({ years, days, hours, minutes, suffix, isWithInAWeek }) => {
403
+ if (days > 7) {
404
+ return 'DD-MM-YYYY';
405
+ }
406
+ return '[less 7] DD-MM-YYYY';
407
+ }}
408
+ ago='ago'
409
+ later='later'
410
+ />
411
+ </I18NProvider>
412
+ );
413
+ let tree = ele.toJSON();
414
+ expect(tree).toMatchSnapshot();
415
+ });
416
+
417
+ it('Should display today1', () => {
418
+ let toDates = [
419
+ '2016-10-24T05:55:28.000Z',
420
+ '2016-10-24T06:55:28.000Z',
421
+ '2016-10-24T04:55:28.000Z',
422
+ '2016-10-25T05:55:28.000Z',
423
+ '2016-10-25T04:55:28.000Z',
424
+ '2016-10-25T06:55:28.000Z',
425
+ '2016-10-26T05:55:28.000Z',
426
+ '2016-10-26T04:55:28.000Z',
427
+ '2016-10-26T06:55:28.000Z',
428
+ '2016-10-23T05:55:28.000Z',
429
+ '2016-10-23T04:55:28.000Z',
430
+ '2016-10-23T06:55:28.000Z'
431
+ ];
432
+ let ele = renderer.create(
433
+ <I18NProvider
434
+ i18n={{
435
+ today: 'today',
436
+ yesterday: 'yesterday',
437
+ now: 'noooow',
438
+ 'support.1day.ago': '1day ago',
439
+ 'support.1day.nhours.ago': 'one day {0} hours ago',
440
+ 'support.1min.ago': '1min ago',
441
+ 'support.nmins.ago': '{0} mins ago'
442
+ }}
443
+ >
444
+ <div>
445
+ {toDates.map((to, i) => (
446
+ <DateTimeDiffFormat
447
+ key={i}
448
+ from='2016-10-25T05:55:28.000Z'
449
+ fromTzData={fromTzData}
450
+ to={to}
451
+ toTzData={toTzData}
452
+ format={({ years, days, months, hours }, pattern) => {
453
+ switch (pattern) {
454
+ case '000000':
455
+ case '000001':
456
+ case '000002':
457
+ return {
458
+ key: 'now'
459
+ };
460
+ break;
461
+ case '000010':
462
+ return {
463
+ key: 'support.1min'
464
+ };
465
+ break;
466
+ case '000020':
467
+ return {
468
+ key: 'support.nmins',
469
+ params: ['m']
470
+ };
471
+ break;
472
+ case '001000':
473
+ case '001100':
474
+ return {
475
+ key: 'support.1day'
476
+ };
477
+ break;
478
+ case '001200':
479
+ case '001201':
480
+ return {
481
+ key: 'support.1day.nhours',
482
+ params: ['h']
483
+ };
484
+ break;
485
+ }
486
+ }}
487
+ ago='ago'
488
+ later='later'
489
+ />
490
+ ))}
491
+ </div>
492
+ </I18NProvider>
493
+ );
494
+ let tree = ele.toJSON();
495
+ expect(tree).toMatchSnapshot();
496
+ });
497
+ it('Should display today later', () => {
498
+ let ele = renderer.create(
499
+ <I18NProvider
500
+ i18n={{
501
+ today: 'today',
502
+ yesterday: 'yesterday',
503
+ 'today.later': '{0}:{1}:{2} later'
504
+ }}
505
+ >
506
+ <DateTimeDiffFormat
507
+ from='2016-10-25T05:55:28.000Z'
508
+ fromTzData={fromTzData}
509
+ to='2016-10-25T05:55:29.000Z'
510
+ toTzData={toTzData}
511
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
512
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
513
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
514
+ others={({ years, days, hours, minutes }) => {
515
+ if (days > 7) {
516
+ return 'DD-MM-YYYY';
517
+ }
518
+ return getDateKeyWithParam(years, days, hours, minutes);
519
+ }}
520
+ ago='ago'
521
+ later='later'
522
+ />
523
+ </I18NProvider>
524
+ );
525
+ let tree = ele.toJSON();
526
+ expect(tree).toMatchSnapshot();
527
+ });
528
+ it('Should display today ago', () => {
529
+ let ele = renderer.create(
530
+ <I18NProvider
531
+ i18n={{
532
+ today: 'today',
533
+ yesterday: 'yesterday',
534
+ 'today.later': '{0}:{1}:{2} later',
535
+ 'today.ago': '{0}:{1}:{2} ago'
536
+ }}
537
+ >
538
+ <DateTimeDiffFormat
539
+ from='2016-10-25T05:55:30.000Z'
540
+ fromTzData={fromTzData}
541
+ to='2016-10-25T05:55:29.000Z'
542
+ toTzData={toTzData}
543
+ today={{ key: 'today', params: ['hh', 'mm', 'ss'] }}
544
+ yesterday={{ key: 'yesterday', params: ['hh', 'mm', 'ss'] }}
545
+ tomorrow={{ key: 'tomorrow', params: ['hh', 'mm', 'ss'] }}
546
+ others={({ years, days, hours, minutes }) => {
547
+ if (days > 7) {
548
+ return 'DD-MM-YYYY';
549
+ }
550
+ return getDateKeyWithParam(years, days, hours, minutes);
551
+ }}
552
+ ago='ago'
553
+ later='later'
554
+ />
555
+ </I18NProvider>
556
+ );
557
+ let tree = ele.toJSON();
558
+ expect(tree).toMatchSnapshot();
559
+ });
560
+ it('Should display years and days', () => {
561
+ let ele = renderer.create(
562
+ <I18NProvider
563
+ i18n={{
564
+ 'nyear.ndays.ago': '{0} years {1} days ago',
565
+ yesterday: 'yesterday'
566
+ }}
567
+ >
568
+ <DateTimeDiffFormat
569
+ from='2017-10-25T05:55:28.000Z'
570
+ fromTzData={fromTzData}
571
+ to='2015-08-25T05:55:28.000Z'
572
+ toTzData={toTzData}
573
+ format={({ years, days, months, hours }, pattern) => {
574
+ if (years > 1) {
575
+ return {
576
+ key: 'nyear.ndays',
577
+ params: ['y', 'days']
578
+ };
579
+ }
580
+ }}
581
+ ago='ago'
582
+ later='later'
583
+ />
584
+ </I18NProvider>
585
+ );
586
+ let tree = ele.toJSON();
587
+ expect(tree).toMatchSnapshot();
588
+ });
589
+ it('Should display years and days1', () => {
590
+ let ele = renderer.create(
591
+ <I18NProvider
592
+ i18n={{
593
+ 'nyear.ndays.later': '{0} years {1} days later',
594
+ yesterday: 'yesterday'
595
+ }}
596
+ >
597
+ <DateTimeDiffFormat
598
+ from='2015-08-25T05:55:28.000Z'
599
+ fromTzData={fromTzData}
600
+ to='2017-10-25T05:55:28.000Z'
601
+ toTzData={toTzData}
602
+ format={({ years, days, months, hours }, pattern) => {
603
+ if (years > 1) {
604
+ return {
605
+ key: 'nyear.ndays',
606
+ params: ['y', 'days']
607
+ };
608
+ }
609
+ }}
610
+ ago='ago'
611
+ later='later'
612
+ />
613
+ </I18NProvider>
614
+ );
615
+ let tree = ele.toJSON();
616
+ expect(tree).toMatchSnapshot();
617
+ });
618
+ });