@sis-cc/dotstatsuite-components 17.1.0 → 17.3.0

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.
@@ -0,0 +1,564 @@
1
+ import { expect } from 'chai';
2
+ import { refineTimePeriod } from '../src/rules2/src/refineTimePeriod';
3
+
4
+ describe('refineTimePeriod tests', () => {
5
+ it('simple year', () => {
6
+ expect(refineTimePeriod({ id: '2015', start: '2015-01-01T00:00:00', end: '2016-12-31T23:59:59' }, { locale: 'en' })).to.deep.equal({
7
+ id: '2015',
8
+ start: '2015-01-01T00:00:00.000Z',
9
+ end: '2016-12-31T23:59:59.000Z'
10
+ });
11
+ });
12
+ it('2 years range', () => {
13
+ expect(refineTimePeriod({ id: '2015/P2Y' }, { locale: 'en' })).to.deep.equal({
14
+ id: '2015/P2Y',
15
+ name: '2015 - 2016',
16
+ start: '2015-01-01T00:00:00.000Z',
17
+ end: '2016-12-31T23:59:59.000Z'
18
+ });
19
+ });
20
+ it('2 years range on March, en', () => {
21
+ expect(refineTimePeriod({ id: '2015-03/P2Y' }, { locale: 'en' })).to.deep.equal({
22
+ id: '2015-03/P2Y',
23
+ name: '2015-Mar - 2017-Feb',
24
+ start: '2015-03-01T00:00:00.000Z',
25
+ end: '2017-02-28T23:59:59.000Z'
26
+ });
27
+ });
28
+ it('2 years range on March, fr', () => {
29
+ expect(refineTimePeriod({ id: '2015-03/P2Y' }, { locale: 'fr' })).to.deep.equal({
30
+ id: '2015-03/P2Y',
31
+ name: 'mars 2015 - févr. 2017',
32
+ start: '2015-03-01T00:00:00.000Z',
33
+ end: '2017-02-28T23:59:59.000Z'
34
+ });
35
+ });
36
+ it('4 years range on Jun 17, en', () => {
37
+ expect(refineTimePeriod({ id: '2015-06-17/P4Y' }, { locale: 'en' })).to.deep.equal({
38
+ id: '2015-06-17/P4Y',
39
+ name: '2015-06-17 - 2019-06-16',
40
+ start: '2015-06-17T00:00:00.000Z',
41
+ end: '2019-06-16T23:59:59.000Z'
42
+ });
43
+ });
44
+ it('4 years range on Jun 17 15h, en', () => {
45
+ expect(refineTimePeriod({ id: '2015-06-17T15:00:00/P4Y' }, { locale: 'en' })).to.deep.equal({
46
+ id: '2015-06-17T15:00:00/P4Y',
47
+ name: '2015-06-17 15:00 - 2019-06-17 14:59',
48
+ start: '2015-06-17T15:00:00.000Z',
49
+ end: '2019-06-17T14:59:59.000Z'
50
+ });
51
+ });
52
+ it('4 years range on Jun 17 15h26, en', () => {
53
+ expect(refineTimePeriod({ id: '2015-06-17T15:26:00/P4Y' }, { locale: 'en' })).to.deep.equal({
54
+ id: '2015-06-17T15:26:00/P4Y',
55
+ name: '2015-06-17 15:26 - 2019-06-17 15:25',
56
+ start: '2015-06-17T15:26:00.000Z',
57
+ end: '2019-06-17T15:25:59.000Z'
58
+ });
59
+ });
60
+ it('4 years range on Jun 17 15h26m46, en', () => {
61
+ expect(refineTimePeriod({ id: '2015-06-17T15:26:46/P4Y' }, { locale: 'en' })).to.deep.equal({
62
+ id: '2015-06-17T15:26:46/P4Y',
63
+ name: '2015-06-17 15:26:46 - 2019-06-17 15:26:45',
64
+ start: '2015-06-17T15:26:46.000Z',
65
+ end: '2019-06-17T15:26:45.000Z'
66
+ });
67
+ });
68
+ it('3 months range, en', () => {
69
+ expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'en' })).to.deep.equal({
70
+ id: '2015/P3M',
71
+ name: '2015-Jan - 2015-Mar',
72
+ start: '2015-01-01T00:00:00.000Z',
73
+ end: '2015-03-31T23:59:59.000Z'
74
+ });
75
+ });
76
+ it('3 months range, fr', () => {
77
+ expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'fr' })).to.deep.equal({
78
+ id: '2015/P3M',
79
+ name: 'janv. - mars 2015',
80
+ start: '2015-01-01T00:00:00.000Z',
81
+ end: '2015-03-31T23:59:59.000Z'
82
+ });
83
+ });
84
+ it('19 months range, en', () => {
85
+ expect(refineTimePeriod({ id: '2015/P19M' }, { locale: 'en' })).to.deep.equal({
86
+ id: '2015/P19M',
87
+ name: '2015-Jan - 2016-Jul',
88
+ start: '2015-01-01T00:00:00.000Z',
89
+ end: '2016-07-31T23:59:59.000Z'
90
+ });
91
+ });
92
+ it('19 months range, fr', () => {
93
+ expect(refineTimePeriod({ id: '2015/P19M' }, { locale: 'fr' })).to.deep.equal({
94
+ id: '2015/P19M',
95
+ name: 'janv. 2015 - juill. 2016',
96
+ start: '2015-01-01T00:00:00.000Z',
97
+ end: '2016-07-31T23:59:59.000Z'
98
+ });
99
+ });
100
+ it('4 months range from April, en', () => {
101
+ expect(refineTimePeriod({ id: '2015-04/P4M' }, { locale: 'en' })).to.deep.equal({
102
+ id: '2015-04/P4M',
103
+ name: '2015-Apr - 2015-Jul',
104
+ start: '2015-04-01T00:00:00.000Z',
105
+ end: '2015-07-31T23:59:59.000Z'
106
+ });
107
+ });
108
+ it('4 months range from April, fr', () => {
109
+ expect(refineTimePeriod({ id: '2015-04/P4M' }, { locale: 'fr' })).to.deep.equal({
110
+ id: '2015-04/P4M',
111
+ name: 'avr. - juill. 2015',
112
+ start: '2015-04-01T00:00:00.000Z',
113
+ end: '2015-07-31T23:59:59.000Z'
114
+ });
115
+ });
116
+ it('2 months range from December, en', () => {
117
+ expect(refineTimePeriod({ id: '2015-12/P2M' }, { locale: 'en' })).to.deep.equal({
118
+ id: '2015-12/P2M',
119
+ name: '2015-Dec - 2016-Jan',
120
+ start: '2015-12-01T00:00:00.000Z',
121
+ end: '2016-01-31T23:59:59.000Z'
122
+ });
123
+ });
124
+ it('2 months range from December, fr', () => {
125
+ expect(refineTimePeriod({ id: '2015-12/P2M' }, { locale: 'fr' })).to.deep.equal({
126
+ id: '2015-12/P2M',
127
+ name: 'déc. 2015 - janv. 2016',
128
+ start: '2015-12-01T00:00:00.000Z',
129
+ end: '2016-01-31T23:59:59.000Z'
130
+ });
131
+ });
132
+ it('5 months range from Feb 2', () => {
133
+ expect(refineTimePeriod({ id: '2015-02-02/P5M' }, { locale: 'en' })).to.deep.equal({
134
+ id: '2015-02-02/P5M',
135
+ name: '2015-02-02 - 2015-07-01',
136
+ start: '2015-02-02T00:00:00.000Z',
137
+ end: '2015-07-01T23:59:59.000Z'
138
+ });
139
+ });
140
+ it('17 months range from Feb 2', () => {
141
+ expect(refineTimePeriod({ id: '2015-02-02/P17M' }, { locale: 'en' })).to.deep.equal({
142
+ id: '2015-02-02/P17M',
143
+ name: '2015-02-02 - 2016-07-01',
144
+ start: '2015-02-02T00:00:00.000Z',
145
+ end: '2016-07-01T23:59:59.000Z'
146
+ });
147
+ });
148
+ it('5 months range from Feb 2 18h', () => {
149
+ expect(refineTimePeriod({ id: '2015-02-02T18:00:00/P5M' }, { locale: 'en' })).to.deep.equal({
150
+ id: '2015-02-02T18:00:00/P5M',
151
+ name: '2015-02-02 18:00 - 2015-07-02 17:59',
152
+ start: '2015-02-02T18:00:00.000Z',
153
+ end: '2015-07-02T17:59:59.000Z'
154
+ });
155
+ });
156
+ it('17 months range from Feb 2', () => {
157
+ expect(refineTimePeriod({ id: '2015-02-02T18:00:00/P17M' }, { locale: 'en' })).to.deep.equal({
158
+ id: '2015-02-02T18:00:00/P17M',
159
+ name: '2015-02-02 18:00 - 2016-07-02 17:59',
160
+ start: '2015-02-02T18:00:00.000Z',
161
+ end: '2016-07-02T17:59:59.000Z'
162
+ });
163
+ });
164
+ it('5 months range from Feb 2 18h25', () => {
165
+ expect(refineTimePeriod({ id: '2015-02-02T18:25:00/P5M' }, { locale: 'en' })).to.deep.equal({
166
+ id: '2015-02-02T18:25:00/P5M',
167
+ name: '2015-02-02 18:25 - 2015-07-02 18:24',
168
+ start: '2015-02-02T18:25:00.000Z',
169
+ end: '2015-07-02T18:24:59.000Z'
170
+ });
171
+ });
172
+ it('5 months range from Feb 2 18h25m23', () => {
173
+ expect(refineTimePeriod({ id: '2015-02-02T18:25:23/P5M' }, { locale: 'en' })).to.deep.equal({
174
+ id: '2015-02-02T18:25:23/P5M',
175
+ name: '2015-02-02 18:25:23 - 2015-07-02 18:25:22',
176
+ start: '2015-02-02T18:25:23.000Z',
177
+ end: '2015-07-02T18:25:22.000Z'
178
+ });
179
+ });
180
+ it('15 days range from 2015', () => {
181
+ expect(refineTimePeriod({ id: '2015/P15D' }, { locale: 'en' })).to.deep.equal({
182
+ id: '2015/P15D',
183
+ name: '2015-01-01 - 2015-01-15',
184
+ start: '2015-01-01T00:00:00.000Z',
185
+ end: '2015-01-15T23:59:59.000Z'
186
+ });
187
+ });
188
+ it('366 days range from 2015', () => {
189
+ expect(refineTimePeriod({ id: '2015/P366D' }, { locale: 'en' })).to.deep.equal({
190
+ id: '2015/P366D',
191
+ name: '2015-01-01 - 2016-01-01',
192
+ start: '2015-01-01T00:00:00.000Z',
193
+ end: '2016-01-01T23:59:59.000Z'
194
+ });
195
+ });
196
+ it('31 days range from 2015 May', () => {
197
+ expect(refineTimePeriod({ id: '2015-05/P31D' }, { locale: 'en' })).to.deep.equal({
198
+ id: '2015-05/P31D',
199
+ name: '2015-05-01 - 2015-05-31',
200
+ start: '2015-05-01T00:00:00.000Z',
201
+ end: '2015-05-31T23:59:59.000Z'
202
+ });
203
+ });
204
+ it('33 days range from 2015 Dec', () => {
205
+ expect(refineTimePeriod({ id: '2015-12/P33D' }, { locale: 'en' })).to.deep.equal({
206
+ id: '2015-12/P33D',
207
+ name: '2015-12-01 - 2016-01-02',
208
+ start: '2015-12-01T00:00:00.000Z',
209
+ end: '2016-01-02T23:59:59.000Z'
210
+ });
211
+ });
212
+ it('31 days range from 2015 May 23', () => {
213
+ expect(refineTimePeriod({ id: '2015-05-23/P31D' }, { locale: 'en' })).to.deep.equal({
214
+ id: '2015-05-23/P31D',
215
+ name: '2015-05-23 - 2015-06-22',
216
+ start: '2015-05-23T00:00:00.000Z',
217
+ end: '2015-06-22T23:59:59.000Z'
218
+ });
219
+ });
220
+ it('33 days range from 2015 Dec 19', () => {
221
+ expect(refineTimePeriod({ id: '2015-12-19/P33D' }, { locale: 'en' })).to.deep.equal({
222
+ id: '2015-12-19/P33D',
223
+ name: '2015-12-19 - 2016-01-20',
224
+ start: '2015-12-19T00:00:00.000Z',
225
+ end: '2016-01-20T23:59:59.000Z'
226
+ });
227
+ });
228
+ it('31 days range from 2015 May 23 05h', () => {
229
+ expect(refineTimePeriod({ id: '2015-05-23T05:00:00/P31D' }, { locale: 'en' })).to.deep.equal({
230
+ id: '2015-05-23T05:00:00/P31D',
231
+ name: '2015-05-23 05:00 - 2015-06-23 04:59',
232
+ start: '2015-05-23T05:00:00.000Z',
233
+ end: '2015-06-23T04:59:59.000Z'
234
+ });
235
+ });
236
+ it('33 days range from 2015 Dec 19 12h', () => {
237
+ expect(refineTimePeriod({ id: '2015-12-19T12:00:00/P33D' }, { locale: 'en' })).to.deep.equal({
238
+ id: '2015-12-19T12:00:00/P33D',
239
+ name: '2015-12-19 12:00 - 2016-01-21 11:59',
240
+ start: '2015-12-19T12:00:00.000Z',
241
+ end: '2016-01-21T11:59:59.000Z'
242
+ });
243
+ });
244
+ it('31 days range from 2015 May 23 05h32', () => {
245
+ expect(refineTimePeriod({ id: '2015-05-23T05:32:00/P31D' }, { locale: 'en' })).to.deep.equal({
246
+ id: '2015-05-23T05:32:00/P31D',
247
+ name: '2015-05-23 05:32 - 2015-06-23 05:31',
248
+ start: '2015-05-23T05:32:00.000Z',
249
+ end: '2015-06-23T05:31:59.000Z'
250
+ });
251
+ });
252
+ it('33 days range from 2015 Dec 19 12h18', () => {
253
+ expect(refineTimePeriod({ id: '2015-12-19T12:18:00/P33D' }, { locale: 'en' })).to.deep.equal({
254
+ id: '2015-12-19T12:18:00/P33D',
255
+ name: '2015-12-19 12:18 - 2016-01-21 12:17',
256
+ start: '2015-12-19T12:18:00.000Z',
257
+ end: '2016-01-21T12:17:59.000Z'
258
+ });
259
+ });
260
+ it('31 days range from 2015 May 23 05h32m15', () => {
261
+ expect(refineTimePeriod({ id: '2015-05-23T05:32:15/P31D' }, { locale: 'en' })).to.deep.equal({
262
+ id: '2015-05-23T05:32:15/P31D',
263
+ name: '2015-05-23 05:32:15 - 2015-06-23 05:32:14',
264
+ start: '2015-05-23T05:32:15.000Z',
265
+ end: '2015-06-23T05:32:14.000Z'
266
+ });
267
+ });
268
+ it('33 days range from 2015 Dec 19 12h18m01', () => {
269
+ expect(refineTimePeriod({ id: '2015-12-19T12:18:01/P33D' }, { locale: 'en' })).to.deep.equal({
270
+ id: '2015-12-19T12:18:01/P33D',
271
+ name: '2015-12-19 12:18:01 - 2016-01-21 12:18:00',
272
+ start: '2015-12-19T12:18:01.000Z',
273
+ end: '2016-01-21T12:18:00.000Z'
274
+ });
275
+ });
276
+ it('4 hours range from 2016', () => {
277
+ expect(refineTimePeriod({ id: '2016/PT4H' }, { locale: 'en' })).to.deep.equal({
278
+ id: '2016/PT4H',
279
+ name: '2016-01-01 00:00 - 03:59',
280
+ start: '2016-01-01T00:00:00.000Z',
281
+ end: '2016-01-01T03:59:59.000Z'
282
+ });
283
+ });
284
+ it('32 hours range from 2016', () => {
285
+ expect(refineTimePeriod({ id: '2016/PT32H' }, { locale: 'en' })).to.deep.equal({
286
+ id: '2016/PT32H',
287
+ name: '2016-01-01 00:00 - 2016-01-02 07:59',
288
+ start: '2016-01-01T00:00:00.000Z',
289
+ end: '2016-01-02T07:59:59.000Z'
290
+ });
291
+ });
292
+ it('4 hours range from 2016 Jun', () => {
293
+ expect(refineTimePeriod({ id: '2016-06/PT4H' }, { locale: 'en' })).to.deep.equal({
294
+ id: '2016-06/PT4H',
295
+ name: '2016-06-01 00:00 - 03:59',
296
+ start: '2016-06-01T00:00:00.000Z',
297
+ end: '2016-06-01T03:59:59.000Z'
298
+ });
299
+ });
300
+ it('32 hours range from 2016 Jun', () => {
301
+ expect(refineTimePeriod({ id: '2016-06/PT32H' }, { locale: 'en' })).to.deep.equal({
302
+ id: '2016-06/PT32H',
303
+ name: '2016-06-01 00:00 - 2016-06-02 07:59',
304
+ start: '2016-06-01T00:00:00.000Z',
305
+ end: '2016-06-02T07:59:59.000Z'
306
+ });
307
+ });
308
+ it('4 hours range from 2016 Jun 28', () => {
309
+ expect(refineTimePeriod({ id: '2016-06-28/PT4H' }, { locale: 'en' })).to.deep.equal({
310
+ id: '2016-06-28/PT4H',
311
+ name: '2016-06-28 00:00 - 03:59',
312
+ start: '2016-06-28T00:00:00.000Z',
313
+ end: '2016-06-28T03:59:59.000Z'
314
+ });
315
+ });
316
+ it('32 hours range from 2016 Jun 28', () => {
317
+ expect(refineTimePeriod({ id: '2016-06-28/PT32H' }, { locale: 'en' })).to.deep.equal({
318
+ id: '2016-06-28/PT32H',
319
+ name: '2016-06-28 00:00 - 2016-06-29 07:59',
320
+ start: '2016-06-28T00:00:00.000Z',
321
+ end: '2016-06-29T07:59:59.000Z'
322
+ });
323
+ });
324
+ it('4 hours range from 2016 Jun 28 17h', () => {
325
+ expect(refineTimePeriod({ id: '2016-06-28T17:00:00/PT4H' }, { locale: 'en' })).to.deep.equal({
326
+ id: '2016-06-28T17:00:00/PT4H',
327
+ name: '2016-06-28 17:00 - 20:59',
328
+ start: '2016-06-28T17:00:00.000Z',
329
+ end: '2016-06-28T20:59:59.000Z'
330
+ });
331
+ });
332
+ it('32 hours range from 2016 Jun 28 17h', () => {
333
+ expect(refineTimePeriod({ id: '2016-06-28T17:00:00/PT32H' }, { locale: 'en' })).to.deep.equal({
334
+ id: '2016-06-28T17:00:00/PT32H',
335
+ name: '2016-06-28 17:00 - 2016-06-30 00:59',
336
+ start: '2016-06-28T17:00:00.000Z',
337
+ end: '2016-06-30T00:59:59.000Z'
338
+ });
339
+ });
340
+ it('4 hours range from 2016 Jun 28 17h38', () => {
341
+ expect(refineTimePeriod({ id: '2016-06-28T17:38:00/PT4H' }, { locale: 'en' })).to.deep.equal({
342
+ id: '2016-06-28T17:38:00/PT4H',
343
+ name: '2016-06-28 17:38 - 21:37',
344
+ start: '2016-06-28T17:38:00.000Z',
345
+ end: '2016-06-28T21:37:59.000Z'
346
+ });
347
+ });
348
+ it('32 hours range from 2016 Jun 28 17h38', () => {
349
+ expect(refineTimePeriod({ id: '2016-06-28T17:38:00/PT32H' }, { locale: 'en' })).to.deep.equal({
350
+ id: '2016-06-28T17:38:00/PT32H',
351
+ name: '2016-06-28 17:38 - 2016-06-30 01:37',
352
+ start: '2016-06-28T17:38:00.000Z',
353
+ end: '2016-06-30T01:37:59.000Z'
354
+ });
355
+ });
356
+ it('4 hours range from 2016 Jun 28 17h38m19', () => {
357
+ expect(refineTimePeriod({ id: '2016-06-28T17:38:19/PT4H' }, { locale: 'en' })).to.deep.equal({
358
+ id: '2016-06-28T17:38:19/PT4H',
359
+ name: '2016-06-28 17:38:19 - 21:38:18',
360
+ start: '2016-06-28T17:38:19.000Z',
361
+ end: '2016-06-28T21:38:18.000Z'
362
+ });
363
+ });
364
+ it('32 hours range from 2016 Jun 28 17h38m19', () => {
365
+ expect(refineTimePeriod({ id: '2016-06-28T17:38:19/PT32H' }, { locale: 'en' })).to.deep.equal({
366
+ id: '2016-06-28T17:38:19/PT32H',
367
+ name: '2016-06-28 17:38:19 - 2016-06-30 01:38:18',
368
+ start: '2016-06-28T17:38:19.000Z',
369
+ end: '2016-06-30T01:38:18.000Z'
370
+ });
371
+ });
372
+ it('17 minutes range from 2017', () => {
373
+ expect(refineTimePeriod({ id: '2017/PT17M' }, { locale: 'en' })).to.deep.equal({
374
+ id: '2017/PT17M',
375
+ name: '2017-01-01 00:00 - 00:16',
376
+ start: '2017-01-01T00:00:00.000Z',
377
+ end: '2017-01-01T00:16:59.000Z'
378
+ });
379
+ });
380
+ it('1446 minutes range from 2017', () => {
381
+ expect(refineTimePeriod({ id: '2017/PT1446M' }, { locale: 'en' })).to.deep.equal({
382
+ id: '2017/PT1446M',
383
+ name: '2017-01-01 00:00 - 2017-01-02 00:05',
384
+ start: '2017-01-01T00:00:00.000Z',
385
+ end: '2017-01-02T00:05:59.000Z'
386
+ });
387
+ });
388
+ it('17 minutes range from 2017 Aug', () => {
389
+ expect(refineTimePeriod({ id: '2017-08/PT17M' }, { locale: 'en' })).to.deep.equal({
390
+ id: '2017-08/PT17M',
391
+ name: '2017-08-01 00:00 - 00:16',
392
+ start: '2017-08-01T00:00:00.000Z',
393
+ end: '2017-08-01T00:16:59.000Z'
394
+ });
395
+ });
396
+ it('1446 minutes range from 2017 Aug', () => {
397
+ expect(refineTimePeriod({ id: '2017-08/PT1446M' }, { locale: 'en' })).to.deep.equal({
398
+ id: '2017-08/PT1446M',
399
+ name: '2017-08-01 00:00 - 2017-08-02 00:05',
400
+ start: '2017-08-01T00:00:00.000Z',
401
+ end: '2017-08-02T00:05:59.000Z'
402
+ });
403
+ });
404
+ it('17 minutes range from 2017 Aug 31', () => {
405
+ expect(refineTimePeriod({ id: '2017-08-31/PT17M' }, { locale: 'en' })).to.deep.equal({
406
+ id: '2017-08-31/PT17M',
407
+ name: '2017-08-31 00:00 - 00:16',
408
+ start: '2017-08-31T00:00:00.000Z',
409
+ end: '2017-08-31T00:16:59.000Z'
410
+ });
411
+ });
412
+ it('1446 minutes range from 2017 Aug 31', () => {
413
+ expect(refineTimePeriod({ id: '2017-08-31/PT1446M' }, { locale: 'en' })).to.deep.equal({
414
+ id: '2017-08-31/PT1446M',
415
+ name: '2017-08-31 00:00 - 2017-09-01 00:05',
416
+ start: '2017-08-31T00:00:00.000Z',
417
+ end: '2017-09-01T00:05:59.000Z'
418
+ });
419
+ });
420
+ it('17 minutes range from 2017 Aug 31 20h', () => {
421
+ expect(refineTimePeriod({ id: '2017-08-31T20:00:00/PT17M' }, { locale: 'en' })).to.deep.equal({
422
+ id: '2017-08-31T20:00:00/PT17M',
423
+ name: '2017-08-31 20:00 - 20:16',
424
+ start: '2017-08-31T20:00:00.000Z',
425
+ end: '2017-08-31T20:16:59.000Z'
426
+ });
427
+ });
428
+ it('1446 minutes range from 2017 Aug 31 20h', () => {
429
+ expect(refineTimePeriod({ id: '2017-08-31T20:00:00/PT1446M' }, { locale: 'en' })).to.deep.equal({
430
+ id: '2017-08-31T20:00:00/PT1446M',
431
+ name: '2017-08-31 20:00 - 2017-09-01 20:05',
432
+ start: '2017-08-31T20:00:00.000Z',
433
+ end: '2017-09-01T20:05:59.000Z'
434
+ });
435
+ });
436
+ it('17 minutes range from 2017 Aug 31 20h10', () => {
437
+ expect(refineTimePeriod({ id: '2017-08-31T20:10:00/PT17M' }, { locale: 'en' })).to.deep.equal({
438
+ id: '2017-08-31T20:10:00/PT17M',
439
+ name: '2017-08-31 20:10 - 20:26',
440
+ start: '2017-08-31T20:10:00.000Z',
441
+ end: '2017-08-31T20:26:59.000Z'
442
+ });
443
+ });
444
+ it('1446 minutes range from 2017 Aug 31 20h10', () => {
445
+ expect(refineTimePeriod({ id: '2017-08-31T20:10:00/PT1446M' }, { locale: 'en' })).to.deep.equal({
446
+ id: '2017-08-31T20:10:00/PT1446M',
447
+ name: '2017-08-31 20:10 - 2017-09-01 20:15',
448
+ start: '2017-08-31T20:10:00.000Z',
449
+ end: '2017-09-01T20:15:59.000Z'
450
+ });
451
+ });
452
+ it('17 minutes range from 2017 Aug 31 20h10m32', () => {
453
+ expect(refineTimePeriod({ id: '2017-08-31T20:10:32/PT17M' }, { locale: 'en' })).to.deep.equal({
454
+ id: '2017-08-31T20:10:32/PT17M',
455
+ name: '2017-08-31 20:10:32 - 20:27:31',
456
+ start: '2017-08-31T20:10:32.000Z',
457
+ end: '2017-08-31T20:27:31.000Z'
458
+ });
459
+ });
460
+ it('1446 minutes range from 2017 Aug 31 20h10m32', () => {
461
+ expect(refineTimePeriod({ id: '2017-08-31T20:10:32/PT1446M' }, { locale: 'en' })).to.deep.equal({
462
+ id: '2017-08-31T20:10:32/PT1446M',
463
+ name: '2017-08-31 20:10:32 - 2017-09-01 20:16:31',
464
+ start: '2017-08-31T20:10:32.000Z',
465
+ end: '2017-09-01T20:16:31.000Z'
466
+ });
467
+ });
468
+ it('25 seconds range from 2016', () => {
469
+ expect(refineTimePeriod({ id: '2016/PT25S' }, { locale: 'en' })).to.deep.equal({
470
+ id: '2016/PT25S',
471
+ name: '2016-01-01 00:00:00 - 00:00:24',
472
+ start: '2016-01-01T00:00:00.000Z',
473
+ end: '2016-01-01T00:00:24.000Z'
474
+ });
475
+ });
476
+ it('86.405 seconds range from 2016', () => {
477
+ expect(refineTimePeriod({ id: '2016/PT86405S' }, { locale: 'en' })).to.deep.equal({
478
+ id: '2016/PT86405S',
479
+ name: '2016-01-01 00:00:00 - 2016-01-02 00:00:04',
480
+ start: '2016-01-01T00:00:00.000Z',
481
+ end: '2016-01-02T00:00:04.000Z'
482
+ });
483
+ });
484
+ it('25 seconds range from 2016 Sep', () => {
485
+ expect(refineTimePeriod({ id: '2016-09/PT25S' }, { locale: 'en' })).to.deep.equal({
486
+ id: '2016-09/PT25S',
487
+ name: '2016-09-01 00:00:00 - 00:00:24',
488
+ start: '2016-09-01T00:00:00.000Z',
489
+ end: '2016-09-01T00:00:24.000Z'
490
+ });
491
+ });
492
+ it('86.405 seconds range from 2016 Sep', () => {
493
+ expect(refineTimePeriod({ id: '2016-09/PT86405S' }, { locale: 'en' })).to.deep.equal({
494
+ id: '2016-09/PT86405S',
495
+ name: '2016-09-01 00:00:00 - 2016-09-02 00:00:04',
496
+ start: '2016-09-01T00:00:00.000Z',
497
+ end: '2016-09-02T00:00:04.000Z'
498
+ });
499
+ });
500
+ it('25 seconds range from 2016 Sep 26', () => {
501
+ expect(refineTimePeriod({ id: '2016-09-26/PT25S' }, { locale: 'en' })).to.deep.equal({
502
+ id: '2016-09-26/PT25S',
503
+ name: '2016-09-26 00:00:00 - 00:00:24',
504
+ start: '2016-09-26T00:00:00.000Z',
505
+ end: '2016-09-26T00:00:24.000Z'
506
+ });
507
+ });
508
+ it('86.405 seconds range from 2016 Sep 26', () => {
509
+ expect(refineTimePeriod({ id: '2016-09-26/PT86405S' }, { locale: 'en' })).to.deep.equal({
510
+ id: '2016-09-26/PT86405S',
511
+ name: '2016-09-26 00:00:00 - 2016-09-27 00:00:04',
512
+ start: '2016-09-26T00:00:00.000Z',
513
+ end: '2016-09-27T00:00:04.000Z'
514
+ });
515
+ });
516
+ it('25 seconds range from 2016 Sep 26 14h', () => {
517
+ expect(refineTimePeriod({ id: '2016-09-26T14:00:00/PT25S' }, { locale: 'en' })).to.deep.equal({
518
+ id: '2016-09-26T14:00:00/PT25S',
519
+ name: '2016-09-26 14:00:00 - 14:00:24',
520
+ start: '2016-09-26T14:00:00.000Z',
521
+ end: '2016-09-26T14:00:24.000Z'
522
+ });
523
+ });
524
+ it('86.405 seconds range from 2016 Sep 26 14h', () => {
525
+ expect(refineTimePeriod({ id: '2016-09-26T14:00:00/PT86405S' }, { locale: 'en' })).to.deep.equal({
526
+ id: '2016-09-26T14:00:00/PT86405S',
527
+ name: '2016-09-26 14:00:00 - 2016-09-27 14:00:04',
528
+ start: '2016-09-26T14:00:00.000Z',
529
+ end: '2016-09-27T14:00:04.000Z'
530
+ });
531
+ });
532
+ it('25 seconds range from 2016 Sep 26 14h32', () => {
533
+ expect(refineTimePeriod({ id: '2016-09-26T14:32:00/PT25S' }, { locale: 'en' })).to.deep.equal({
534
+ id: '2016-09-26T14:32:00/PT25S',
535
+ name: '2016-09-26 14:32:00 - 14:32:24',
536
+ start: '2016-09-26T14:32:00.000Z',
537
+ end: '2016-09-26T14:32:24.000Z'
538
+ });
539
+ });
540
+ it('86.405 seconds range from 2016 Sep 26 14h32', () => {
541
+ expect(refineTimePeriod({ id: '2016-09-26T14:32:00/PT86405S' }, { locale: 'en' })).to.deep.equal({
542
+ id: '2016-09-26T14:32:00/PT86405S',
543
+ name: '2016-09-26 14:32:00 - 2016-09-27 14:32:04',
544
+ start: '2016-09-26T14:32:00.000Z',
545
+ end: '2016-09-27T14:32:04.000Z'
546
+ });
547
+ });
548
+ it('25 seconds range from 2016 Sep 26 14h32m10', () => {
549
+ expect(refineTimePeriod({ id: '2016-09-26T14:32:10/PT25S' }, { locale: 'en' })).to.deep.equal({
550
+ id: '2016-09-26T14:32:10/PT25S',
551
+ name: '2016-09-26 14:32:10 - 14:32:34',
552
+ start: '2016-09-26T14:32:10.000Z',
553
+ end: '2016-09-26T14:32:34.000Z'
554
+ });
555
+ });
556
+ it('86.405 seconds range from 2016 Sep 26 14h32m10', () => {
557
+ expect(refineTimePeriod({ id: '2016-09-26T14:32:10/PT86405S' }, { locale: 'en' })).to.deep.equal({
558
+ id: '2016-09-26T14:32:10/PT86405S',
559
+ name: '2016-09-26 14:32:10 - 2016-09-27 14:32:14',
560
+ start: '2016-09-26T14:32:10.000Z',
561
+ end: '2016-09-27T14:32:14.000Z'
562
+ });
563
+ });
564
+ });
@@ -0,0 +1,35 @@
1
+ import { expect } from 'chai';
2
+ import { refineDimensions } from '../src/rules2/src';
3
+
4
+ describe('refine dimensions tests', () => {
5
+ it('blank case', () => {
6
+ expect(refineDimensions([], '')).to.deep.equal([]);
7
+ });
8
+ it('complete case', () => {
9
+ const dimensions = [
10
+ { id: 'd0', values: [] },
11
+ { id: 'd1', values: [{ id: 'v0' }] },
12
+ { id: 'd2', values: [{ id: 'v0' }, { id: 'v1' }, { id: 'v2' }] },
13
+ { id: 'd3', values: [{ id: 'v0' }, { id: 'v1' }, { id: 'v2' }] },
14
+ { id: 'd4', values: [{ id: 'v0' }, { id: 'v1' }, { id: 'v2' }] },
15
+ { id: 'd5', values: [{ id: 'v0' }] },
16
+ { id: 'd6', values: [{ id: 'v0' }, { id: 'v1' }] },
17
+ { id: 'd7', values: [{ id: 'v0' }] },
18
+ { id: 'd8', values: [{ id: 'v0' }, { id: 'v1' }] }
19
+ ];
20
+
21
+ const dataquery = '.v0+v1.v0.v0+v1...';
22
+
23
+ expect(refineDimensions(dimensions, dataquery)).to.deep.equal([
24
+ { id: 'd0', values: [], header: true },
25
+ { id: 'd1', values: [{ id: 'v0' }], header: true },
26
+ { id: 'd2', values: [{ id: 'v0' }, { id: 'v1', empty: true }, { id: 'v2', empty: true }], header: true },
27
+ { id: 'd3', values: [{ id: 'v0' }, { id: 'v1' }, { id: 'v2', empty: true }], header: false },
28
+ { id: 'd4', values: [{ id: 'v0' }, { id: 'v1' }, { id: 'v2' }], header: false },
29
+ { id: 'd5', values: [{ id: 'v0' }], header: true },
30
+ { id: 'd6', values: [{ id: 'v0' }, { id: 'v1' }], header: false },
31
+ { id: 'd7', values: [{ id: 'v0' }], header: true },
32
+ { id: 'd8', values: [{ id: 'v0' }, { id: 'v1' }], header: false }
33
+ ]);
34
+ })
35
+ });