@zohodesk/i18n 1.0.0-beta.2 → 1.0.0-beta.20

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 (81) hide show
  1. package/README.md +80 -5
  2. package/es/I18NContext.js +1 -2
  3. package/es/components/DateTimeDiffFormat.js +191 -184
  4. package/es/components/FormatText.js +4 -25
  5. package/es/components/HOCI18N.js +33 -45
  6. package/es/components/I18N.js +46 -63
  7. package/es/components/I18NProvider.js +54 -84
  8. package/es/components/PluralFormat.js +29 -48
  9. package/es/components/UserTimeDiffFormat.js +65 -70
  10. package/es/components/__tests__/DateTimeDiffFormat.spec.js +868 -657
  11. package/es/components/__tests__/FormatText.spec.js +20 -17
  12. package/es/components/__tests__/HOCI18N.spec.js +18 -22
  13. package/es/components/__tests__/I18N.spec.js +20 -19
  14. package/es/components/__tests__/I18NProvider.spec.js +36 -45
  15. package/es/components/__tests__/PluralFormat.spec.js +20 -17
  16. package/es/components/__tests__/UserTimeDiffFormat.spec.js +1343 -1095
  17. package/es/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  18. package/es/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  19. package/es/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  20. package/es/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  21. package/es/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  22. package/es/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  23. package/es/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  24. package/es/index.js +2 -6
  25. package/es/utils.js +250 -385
  26. package/lib/I18NContext.js +6 -6
  27. package/lib/components/DateTimeDiffFormat.js +166 -123
  28. package/lib/components/FormatText.js +32 -22
  29. package/lib/components/HOCI18N.js +47 -23
  30. package/lib/components/I18N.js +60 -36
  31. package/lib/components/I18NProvider.js +76 -69
  32. package/lib/components/PluralFormat.js +42 -32
  33. package/lib/components/UserTimeDiffFormat.js +81 -54
  34. package/lib/components/__tests__/DateTimeDiffFormat.spec.js +815 -629
  35. package/lib/components/__tests__/FormatText.spec.js +23 -25
  36. package/lib/components/__tests__/HOCI18N.spec.js +26 -34
  37. package/lib/components/__tests__/I18N.spec.js +21 -26
  38. package/lib/components/__tests__/I18NProvider.spec.js +43 -51
  39. package/lib/components/__tests__/PluralFormat.spec.js +24 -28
  40. package/lib/components/__tests__/UserTimeDiffFormat.spec.js +1256 -1039
  41. package/lib/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -258
  42. package/lib/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -17
  43. package/lib/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -15
  44. package/lib/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -17
  45. package/lib/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -13
  46. package/lib/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -17
  47. package/lib/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -366
  48. package/lib/index.js +73 -119
  49. package/lib/utils.js +222 -329
  50. package/package.json +29 -29
  51. package/src/I18NContext.js +3 -0
  52. package/src/components/DateTimeDiffFormat.js +256 -0
  53. package/src/components/FormatText.js +14 -0
  54. package/src/components/HOCI18N.js +37 -0
  55. package/src/components/I18N.js +72 -0
  56. package/src/components/I18NProvider.js +110 -0
  57. package/src/components/PluralFormat.js +37 -0
  58. package/src/components/UserTimeDiffFormat.js +97 -0
  59. package/src/components/__tests__/DateTimeDiffFormat.spec.js +618 -0
  60. package/src/components/__tests__/FormatText.spec.js +27 -0
  61. package/src/components/__tests__/HOCI18N.spec.js +33 -0
  62. package/src/components/__tests__/I18N.spec.js +30 -0
  63. package/src/components/__tests__/I18NProvider.spec.js +65 -0
  64. package/src/components/__tests__/PluralFormat.spec.js +28 -0
  65. package/src/components/__tests__/UserTimeDiffFormat.spec.js +1076 -0
  66. package/src/components/__tests__/__snapshots__/DateTimeDiffFormat.spec.js.snap +258 -0
  67. package/src/components/__tests__/__snapshots__/FormatText.spec.js.snap +17 -0
  68. package/src/components/__tests__/__snapshots__/HOCI18N.spec.js.snap +15 -0
  69. package/src/components/__tests__/__snapshots__/I18N.spec.js.snap +17 -0
  70. package/src/components/__tests__/__snapshots__/I18NProvider.spec.js.snap +13 -0
  71. package/src/components/__tests__/__snapshots__/PluralFormat.spec.js.snap +17 -0
  72. package/src/components/__tests__/__snapshots__/UserTimeDiffFormat.spec.js.snap +366 -0
  73. package/src/index.js +33 -0
  74. package/src/utils.js +527 -0
  75. package/.DS_Store +0 -0
  76. package/es/components/NewDateFormat.js +0 -50
  77. package/es/offset.js +0 -629
  78. package/es/timezones.js +0 -112
  79. package/lib/components/NewDateFormat.js +0 -68
  80. package/lib/offset.js +0 -634
  81. package/lib/timezones.js +0 -120
@@ -0,0 +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
+ });
@@ -0,0 +1,27 @@
1
+ import FormatText from '../FormatText';
2
+ import I18NProvider from '../I18NProvider';
3
+ import React from 'react';
4
+ import renderer from 'react-test-renderer';
5
+
6
+ describe('FormatText component', () => {
7
+ it('Should display i18n value as html', () => {
8
+ let ele=renderer.create(
9
+ <I18NProvider i18n={{ key1: 'vimal1<b>vimal</b>' }}>
10
+ <FormatText i18NKey='key1' isHtml />
11
+ </I18NProvider>
12
+ );
13
+ let tree=ele.toJSON();
14
+ expect(tree).toMatchSnapshot();
15
+ });
16
+
17
+ it('Should display i18n value', () => {
18
+ let ele=renderer.create(
19
+ <I18NProvider i18n={{ key1: 'vimal1<b>vimal</b>' }}>
20
+ <FormatText i18NKey='key1' />
21
+ </I18NProvider>
22
+ );
23
+ let tree=ele.toJSON();
24
+ expect(tree).toMatchSnapshot();
25
+ });
26
+
27
+ });
@@ -0,0 +1,33 @@
1
+ import HOCI18N from '..//HOCI18N';
2
+ import I18NProvider from '../I18NProvider';
3
+ import PropTypes from 'prop-types';
4
+ import React from 'react';
5
+ import renderer from 'react-test-renderer';
6
+
7
+ let Test = props => <div>test{props.placeHolder}</div>;
8
+ Test.propTypes = {
9
+ placeHolder: PropTypes.string
10
+ };
11
+ const defaultProps = {
12
+ i18NKey: 'key1<b>vimal</b>'
13
+ };
14
+
15
+ describe('I18N component', () => {
16
+ it('Should display i18n value', () => {
17
+ Test = HOCI18N(['placeHolder'])(Test);
18
+ let ele = renderer.create(
19
+ <I18NProvider i18n={{ key1: 'vimal1' }}>
20
+ <Test placeHolder='key1' />
21
+ </I18NProvider>
22
+ );
23
+ let tree = ele.toJSON();
24
+ expect(tree).toMatchSnapshot();
25
+ });
26
+
27
+ it('Should display i18n key', () => {
28
+ Test = HOCI18N(['placeHolder'])(Test);
29
+ let ele = renderer.create(<Test placeHolder='key1' />);
30
+ let tree = ele.toJSON();
31
+ expect(tree).toMatchSnapshot();
32
+ });
33
+ });