@cubejs-client/core 1.3.15 → 1.3.16

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 (100) hide show
  1. package/dist/{cubejs-client-core.js → cubejs-client-core.cjs.js} +1016 -411
  2. package/dist/cubejs-client-core.cjs.js.map +1 -0
  3. package/dist/cubejs-client-core.umd.js +2901 -12088
  4. package/dist/cubejs-client-core.umd.js.map +1 -1
  5. package/dist/src/HttpTransport.d.ts +54 -0
  6. package/dist/src/HttpTransport.d.ts.map +1 -0
  7. package/dist/src/HttpTransport.js +55 -0
  8. package/dist/src/Meta.d.ts +62 -0
  9. package/dist/src/Meta.d.ts.map +1 -0
  10. package/dist/src/Meta.js +150 -0
  11. package/dist/src/ProgressResult.d.ts +8 -0
  12. package/dist/src/ProgressResult.d.ts.map +1 -0
  13. package/dist/src/ProgressResult.js +11 -0
  14. package/dist/src/RequestError.d.ts +6 -0
  15. package/dist/src/RequestError.d.ts.map +1 -0
  16. package/dist/src/RequestError.js +7 -0
  17. package/dist/src/ResultSet.d.ts +430 -0
  18. package/dist/src/ResultSet.d.ts.map +1 -0
  19. package/dist/src/ResultSet.js +952 -0
  20. package/dist/src/SqlQuery.d.ts +17 -0
  21. package/dist/src/SqlQuery.d.ts.map +1 -0
  22. package/dist/src/SqlQuery.js +11 -0
  23. package/dist/src/index.d.ts +194 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +411 -0
  26. package/dist/src/index.umd.d.ts +3 -0
  27. package/dist/src/index.umd.d.ts.map +1 -0
  28. package/dist/src/index.umd.js +6 -0
  29. package/dist/src/time.d.ts +70 -0
  30. package/dist/src/time.d.ts.map +1 -0
  31. package/dist/src/time.js +249 -0
  32. package/dist/src/types.d.ts +424 -0
  33. package/dist/src/types.d.ts.map +1 -0
  34. package/dist/src/types.js +1 -0
  35. package/dist/src/utils.d.ts +19 -0
  36. package/dist/src/utils.d.ts.map +1 -0
  37. package/dist/src/utils.js +294 -0
  38. package/dist/test/CubeApi.test.d.ts +7 -0
  39. package/dist/test/CubeApi.test.d.ts.map +1 -0
  40. package/dist/test/CubeApi.test.js +279 -0
  41. package/dist/test/HttpTransport.test.d.ts +2 -0
  42. package/dist/test/HttpTransport.test.d.ts.map +1 -0
  43. package/dist/test/HttpTransport.test.js +244 -0
  44. package/dist/test/ResultSet.test.d.ts +7 -0
  45. package/dist/test/ResultSet.test.d.ts.map +1 -0
  46. package/dist/test/ResultSet.test.js +1725 -0
  47. package/dist/test/compare-date-range.test.d.ts +2 -0
  48. package/dist/test/compare-date-range.test.d.ts.map +1 -0
  49. package/dist/test/compare-date-range.test.js +742 -0
  50. package/dist/test/data-blending.test.d.ts +2 -0
  51. package/dist/test/data-blending.test.d.ts.map +1 -0
  52. package/dist/test/data-blending.test.js +423 -0
  53. package/dist/test/default-heuristics.test.d.ts +2 -0
  54. package/dist/test/default-heuristics.test.d.ts.map +1 -0
  55. package/dist/test/default-heuristics.test.js +108 -0
  56. package/dist/test/drill-down.test.d.ts +2 -0
  57. package/dist/test/drill-down.test.d.ts.map +1 -0
  58. package/dist/test/drill-down.test.js +373 -0
  59. package/dist/test/fixtures/datablending/load-responses.json +261 -0
  60. package/dist/test/granularity.test.d.ts +2 -0
  61. package/dist/test/granularity.test.d.ts.map +1 -0
  62. package/dist/test/granularity.test.js +218 -0
  63. package/dist/test/helpers.d.ts +283 -0
  64. package/dist/test/helpers.d.ts.map +1 -0
  65. package/dist/test/helpers.js +974 -0
  66. package/dist/test/index.test.d.ts +7 -0
  67. package/dist/test/index.test.d.ts.map +1 -0
  68. package/dist/test/index.test.js +370 -0
  69. package/dist/test/table.test.d.ts +2 -0
  70. package/dist/test/table.test.d.ts.map +1 -0
  71. package/dist/test/table.test.js +757 -0
  72. package/dist/test/utils.test.d.ts +2 -0
  73. package/dist/test/utils.test.d.ts.map +1 -0
  74. package/dist/test/utils.test.js +32 -0
  75. package/package.json +26 -21
  76. package/dist/cubejs-client-core.esm.js +0 -1639
  77. package/dist/cubejs-client-core.esm.js.map +0 -1
  78. package/dist/cubejs-client-core.js.map +0 -1
  79. package/index.d.ts +0 -1338
  80. package/src/HttpTransport.js +0 -60
  81. package/src/HttpTransport.test.js +0 -117
  82. package/src/Meta.js +0 -142
  83. package/src/ProgressResult.js +0 -13
  84. package/src/RequestError.js +0 -7
  85. package/src/ResultSet.js +0 -746
  86. package/src/SqlQuery.js +0 -13
  87. package/src/index.js +0 -398
  88. package/src/index.test.js +0 -454
  89. package/src/index.umd.js +0 -8
  90. package/src/tests/ResultSet.test.js +0 -1655
  91. package/src/tests/compare-date-range.test.js +0 -753
  92. package/src/tests/data-blending.test.js +0 -432
  93. package/src/tests/default-heuristics.test.js +0 -118
  94. package/src/tests/drill-down.test.js +0 -402
  95. package/src/tests/fixtures/datablending/load-responses.json +0 -261
  96. package/src/tests/granularity.test.js +0 -225
  97. package/src/tests/table.test.js +0 -791
  98. package/src/tests/utils.test.js +0 -35
  99. package/src/time.js +0 -296
  100. package/src/utils.js +0 -368
@@ -0,0 +1,757 @@
1
+ /* globals describe, expect, test */
2
+ import 'jest';
3
+ import ResultSet from '../src/ResultSet';
4
+ describe('resultSet tablePivot and tableColumns', () => {
5
+ describe('it works with one measure', () => {
6
+ const resultSet = new ResultSet({
7
+ query: {
8
+ measures: ['Orders.count'],
9
+ dimensions: ['Users.country', 'Users.gender'],
10
+ },
11
+ data: [
12
+ {
13
+ 'Users.country': 'Germany',
14
+ 'Users.gender': 'male',
15
+ 'Orders.count': 10,
16
+ 'Orders.amount': 11,
17
+ },
18
+ {
19
+ 'Users.country': 'Germany',
20
+ 'Users.gender': 'female',
21
+ 'Orders.count': 12,
22
+ 'Orders.amount': 13,
23
+ },
24
+ {
25
+ 'Users.country': 'US',
26
+ 'Users.gender': 'male',
27
+ 'Orders.count': 5,
28
+ 'Orders.amount': 6,
29
+ },
30
+ {
31
+ 'Users.country': 'US',
32
+ 'Users.gender': 'female',
33
+ 'Orders.count': 7,
34
+ 'Orders.amount': 8,
35
+ },
36
+ ],
37
+ annotation: {
38
+ measures: {
39
+ 'Orders.count': {
40
+ title: 'Orders Count',
41
+ shortTitle: 'Count',
42
+ type: 'number',
43
+ },
44
+ 'Orders.amount': {
45
+ title: 'Orders Amount',
46
+ shortTitle: 'Amount',
47
+ type: 'number',
48
+ },
49
+ },
50
+ dimensions: {
51
+ 'Users.country': {
52
+ title: 'Users Country',
53
+ shortTitle: 'Country',
54
+ type: 'string',
55
+ },
56
+ 'Users.gender': {
57
+ title: 'Users Gender',
58
+ shortTitle: 'Gender',
59
+ type: 'string',
60
+ },
61
+ },
62
+ segments: {},
63
+ timeDimensions: {},
64
+ },
65
+ });
66
+ describe('all dimensions on `x` axis', () => {
67
+ const pivotConfig = {
68
+ x: ['Users.country', 'Users.gender'],
69
+ y: ['measures'],
70
+ };
71
+ test('tablePivot', () => {
72
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
73
+ {
74
+ 'Users.country': 'Germany',
75
+ 'Users.gender': 'male',
76
+ 'Orders.count': 10,
77
+ },
78
+ {
79
+ 'Users.country': 'Germany',
80
+ 'Users.gender': 'female',
81
+ 'Orders.count': 12,
82
+ },
83
+ {
84
+ 'Users.country': 'US',
85
+ 'Users.gender': 'male',
86
+ 'Orders.count': 5,
87
+ },
88
+ {
89
+ 'Users.country': 'US',
90
+ 'Users.gender': 'female',
91
+ 'Orders.count': 7,
92
+ },
93
+ ]);
94
+ });
95
+ test('tableColumns', () => {
96
+ expect(resultSet.tableColumns(pivotConfig)).toEqual([
97
+ {
98
+ key: 'Users.country',
99
+ dataIndex: 'Users.country',
100
+ title: 'Users Country',
101
+ shortTitle: 'Country',
102
+ type: 'string',
103
+ format: undefined,
104
+ meta: undefined,
105
+ },
106
+ {
107
+ key: 'Users.gender',
108
+ dataIndex: 'Users.gender',
109
+ title: 'Users Gender',
110
+ shortTitle: 'Gender',
111
+ type: 'string',
112
+ format: undefined,
113
+ meta: undefined,
114
+ },
115
+ {
116
+ key: 'Orders.count',
117
+ dataIndex: 'Orders.count',
118
+ title: 'Orders Count',
119
+ shortTitle: 'Count',
120
+ type: 'number',
121
+ format: undefined,
122
+ meta: undefined,
123
+ },
124
+ ]);
125
+ });
126
+ });
127
+ describe('one dimension on `x` and one one `y` axis', () => {
128
+ const pivotConfig = {
129
+ x: ['Users.country'],
130
+ y: ['Users.gender', 'measures'],
131
+ };
132
+ test('tablePivot', () => {
133
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
134
+ {
135
+ 'Users.country': 'Germany',
136
+ 'male,Orders.count': 10,
137
+ 'female,Orders.count': 12,
138
+ },
139
+ {
140
+ 'Users.country': 'US',
141
+ 'male,Orders.count': 5,
142
+ 'female,Orders.count': 7,
143
+ },
144
+ ]);
145
+ });
146
+ test('tableColumns', () => {
147
+ expect(resultSet.tableColumns(pivotConfig)).toEqual([
148
+ {
149
+ key: 'Users.country',
150
+ title: 'Users Country',
151
+ shortTitle: 'Country',
152
+ type: 'string',
153
+ dataIndex: 'Users.country',
154
+ format: undefined,
155
+ meta: undefined,
156
+ },
157
+ {
158
+ key: 'male',
159
+ type: 'string',
160
+ title: 'Users Gender male',
161
+ shortTitle: 'male',
162
+ format: undefined,
163
+ meta: undefined,
164
+ children: [
165
+ {
166
+ key: 'Orders.count',
167
+ type: 'number',
168
+ dataIndex: 'male,Orders.count',
169
+ title: 'Orders Count',
170
+ shortTitle: 'Count',
171
+ format: undefined,
172
+ meta: undefined,
173
+ },
174
+ ],
175
+ },
176
+ {
177
+ key: 'female',
178
+ type: 'string',
179
+ title: 'Users Gender female',
180
+ shortTitle: 'female',
181
+ format: undefined,
182
+ meta: undefined,
183
+ children: [
184
+ {
185
+ key: 'Orders.count',
186
+ type: 'number',
187
+ dataIndex: 'female,Orders.count',
188
+ title: 'Orders Count',
189
+ shortTitle: 'Count',
190
+ format: undefined,
191
+ meta: undefined,
192
+ },
193
+ ],
194
+ },
195
+ ]);
196
+ });
197
+ });
198
+ describe('all dimensions and measures on `y` axis', () => {
199
+ const pivotConfig = {
200
+ x: [],
201
+ y: ['Users.country', 'Users.gender', 'measures'],
202
+ };
203
+ test('tablePivot', () => {
204
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
205
+ {
206
+ 'Germany,male,Orders.count': 10,
207
+ 'Germany,female,Orders.count': 12,
208
+ 'US,male,Orders.count': 5,
209
+ 'US,female,Orders.count': 7,
210
+ },
211
+ ]);
212
+ });
213
+ test('tableColumns', () => {
214
+ expect(resultSet.tableColumns(pivotConfig)).toEqual([
215
+ {
216
+ key: 'Germany',
217
+ type: 'string',
218
+ title: 'Users Country Germany',
219
+ shortTitle: 'Germany',
220
+ meta: undefined,
221
+ format: undefined,
222
+ children: [
223
+ {
224
+ key: 'male',
225
+ type: 'string',
226
+ title: 'Users Gender male',
227
+ shortTitle: 'male',
228
+ meta: undefined,
229
+ format: undefined,
230
+ children: [
231
+ {
232
+ key: 'Orders.count',
233
+ type: 'number',
234
+ dataIndex: 'Germany,male,Orders.count',
235
+ title: 'Orders Count',
236
+ shortTitle: 'Count',
237
+ meta: undefined,
238
+ format: undefined,
239
+ },
240
+ ],
241
+ },
242
+ {
243
+ key: 'female',
244
+ type: 'string',
245
+ title: 'Users Gender female',
246
+ shortTitle: 'female',
247
+ meta: undefined,
248
+ format: undefined,
249
+ children: [
250
+ {
251
+ key: 'Orders.count',
252
+ type: 'number',
253
+ dataIndex: 'Germany,female,Orders.count',
254
+ title: 'Orders Count',
255
+ shortTitle: 'Count',
256
+ meta: undefined,
257
+ format: undefined,
258
+ },
259
+ ],
260
+ },
261
+ ],
262
+ },
263
+ {
264
+ key: 'US',
265
+ type: 'string',
266
+ title: 'Users Country US',
267
+ shortTitle: 'US',
268
+ meta: undefined,
269
+ format: undefined,
270
+ children: [
271
+ {
272
+ key: 'male',
273
+ type: 'string',
274
+ title: 'Users Gender male',
275
+ shortTitle: 'male',
276
+ meta: undefined,
277
+ format: undefined,
278
+ children: [
279
+ {
280
+ key: 'Orders.count',
281
+ type: 'number',
282
+ dataIndex: 'US,male,Orders.count',
283
+ title: 'Orders Count',
284
+ shortTitle: 'Count',
285
+ meta: undefined,
286
+ format: undefined,
287
+ },
288
+ ],
289
+ },
290
+ {
291
+ key: 'female',
292
+ type: 'string',
293
+ title: 'Users Gender female',
294
+ shortTitle: 'female',
295
+ meta: undefined,
296
+ format: undefined,
297
+ children: [
298
+ {
299
+ key: 'Orders.count',
300
+ type: 'number',
301
+ dataIndex: 'US,female,Orders.count',
302
+ title: 'Orders Count',
303
+ shortTitle: 'Count',
304
+ meta: undefined,
305
+ format: undefined,
306
+ },
307
+ ],
308
+ },
309
+ ],
310
+ },
311
+ ]);
312
+ });
313
+ });
314
+ describe('all dimensions and measures on `x` axis', () => {
315
+ const pivotConfig = {
316
+ x: ['Users.country', 'Users.gender', 'measures'],
317
+ y: [],
318
+ };
319
+ test('tablePivot', () => {
320
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
321
+ {
322
+ 'Users.country': 'Germany',
323
+ 'Users.gender': 'male',
324
+ measures: 'Orders.count',
325
+ value: 10,
326
+ },
327
+ {
328
+ 'Users.country': 'Germany',
329
+ 'Users.gender': 'female',
330
+ measures: 'Orders.count',
331
+ value: 12,
332
+ },
333
+ {
334
+ 'Users.country': 'US',
335
+ 'Users.gender': 'male',
336
+ measures: 'Orders.count',
337
+ value: 5,
338
+ },
339
+ {
340
+ 'Users.country': 'US',
341
+ 'Users.gender': 'female',
342
+ measures: 'Orders.count',
343
+ value: 7,
344
+ },
345
+ ]);
346
+ });
347
+ test('tableColumns', () => {
348
+ expect(resultSet.tableColumns(pivotConfig)).toEqual([
349
+ {
350
+ key: 'Users.country',
351
+ title: 'Users Country',
352
+ shortTitle: 'Country',
353
+ type: 'string',
354
+ dataIndex: 'Users.country',
355
+ format: undefined,
356
+ meta: undefined,
357
+ },
358
+ {
359
+ key: 'Users.gender',
360
+ title: 'Users Gender',
361
+ shortTitle: 'Gender',
362
+ type: 'string',
363
+ dataIndex: 'Users.gender',
364
+ format: undefined,
365
+ meta: undefined,
366
+ },
367
+ {
368
+ key: 'measures',
369
+ dataIndex: 'measures',
370
+ title: 'Measures',
371
+ shortTitle: 'Measures',
372
+ type: 'string',
373
+ },
374
+ {
375
+ key: 'value',
376
+ dataIndex: 'value',
377
+ title: 'Value',
378
+ shortTitle: 'Value',
379
+ type: 'string',
380
+ },
381
+ ]);
382
+ });
383
+ });
384
+ test('measures on `x` axis', () => {
385
+ const pivotConfig = {
386
+ x: ['Users.gender', 'measures'],
387
+ y: ['Users.country'],
388
+ };
389
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
390
+ {
391
+ 'Users.gender': 'male',
392
+ measures: 'Orders.count',
393
+ US: 5,
394
+ Germany: 10,
395
+ },
396
+ {
397
+ 'Users.gender': 'female',
398
+ measures: 'Orders.count',
399
+ US: 7,
400
+ Germany: 12,
401
+ },
402
+ ]);
403
+ });
404
+ });
405
+ describe('it works with more than one measure', () => {
406
+ const resultSet = new ResultSet({
407
+ query: {
408
+ measures: ['Orders.count', 'Orders.amount'],
409
+ dimensions: ['Users.country', 'Users.gender'],
410
+ },
411
+ data: [
412
+ {
413
+ 'Users.country': 'Germany',
414
+ 'Users.gender': 'male',
415
+ 'Orders.count': 10,
416
+ 'Orders.amount': 11,
417
+ },
418
+ {
419
+ 'Users.country': 'Germany',
420
+ 'Users.gender': 'female',
421
+ 'Orders.count': 12,
422
+ 'Orders.amount': 13,
423
+ },
424
+ {
425
+ 'Users.country': 'US',
426
+ 'Users.gender': 'male',
427
+ 'Orders.count': 5,
428
+ 'Orders.amount': 6,
429
+ },
430
+ {
431
+ 'Users.country': 'US',
432
+ 'Users.gender': 'female',
433
+ 'Orders.count': 7,
434
+ 'Orders.amount': 8,
435
+ },
436
+ ],
437
+ annotation: {
438
+ measures: {
439
+ 'Orders.count': {
440
+ title: 'Orders Count',
441
+ shortTitle: 'Count',
442
+ type: 'number',
443
+ },
444
+ 'Orders.amount': {
445
+ title: 'Orders Amount',
446
+ shortTitle: 'Amount',
447
+ type: 'number',
448
+ },
449
+ },
450
+ dimensions: {
451
+ 'Users.country': {
452
+ title: 'Users Country',
453
+ shortTitle: 'Country',
454
+ type: 'string',
455
+ },
456
+ 'Users.gender': {
457
+ title: 'Users Gender',
458
+ shortTitle: 'Gender',
459
+ type: 'string',
460
+ },
461
+ },
462
+ segments: {},
463
+ timeDimensions: {},
464
+ },
465
+ });
466
+ test('all dimensions on `x` axis', () => {
467
+ const pivotConfig = {
468
+ x: ['Users.country', 'Users.gender'],
469
+ y: ['measures'],
470
+ };
471
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
472
+ {
473
+ 'Users.country': 'Germany',
474
+ 'Users.gender': 'male',
475
+ 'Orders.count': 10,
476
+ 'Orders.amount': 11,
477
+ },
478
+ {
479
+ 'Users.country': 'Germany',
480
+ 'Users.gender': 'female',
481
+ 'Orders.count': 12,
482
+ 'Orders.amount': 13,
483
+ },
484
+ {
485
+ 'Users.country': 'US',
486
+ 'Users.gender': 'male',
487
+ 'Orders.count': 5,
488
+ 'Orders.amount': 6,
489
+ },
490
+ {
491
+ 'Users.country': 'US',
492
+ 'Users.gender': 'female',
493
+ 'Orders.count': 7,
494
+ 'Orders.amount': 8,
495
+ },
496
+ ]);
497
+ });
498
+ test('one dimension on `x` and one one `y` axis', () => {
499
+ const pivotConfig = {
500
+ x: ['Users.country'],
501
+ y: ['Users.gender', 'measures'],
502
+ };
503
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
504
+ {
505
+ 'Users.country': 'Germany',
506
+ 'male,Orders.count': 10,
507
+ 'female,Orders.count': 12,
508
+ 'male,Orders.amount': 11,
509
+ 'female,Orders.amount': 13,
510
+ },
511
+ {
512
+ 'Users.country': 'US',
513
+ 'male,Orders.count': 5,
514
+ 'female,Orders.count': 7,
515
+ 'male,Orders.amount': 6,
516
+ 'female,Orders.amount': 8,
517
+ },
518
+ ]);
519
+ });
520
+ test('all dimensions and measures on `y` axis', () => {
521
+ const pivotConfig = {
522
+ x: [],
523
+ y: ['Users.country', 'Users.gender', 'measures'],
524
+ };
525
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
526
+ {
527
+ 'Germany,male,Orders.count': 10,
528
+ 'Germany,male,Orders.amount': 11,
529
+ 'Germany,female,Orders.count': 12,
530
+ 'Germany,female,Orders.amount': 13,
531
+ 'US,male,Orders.count': 5,
532
+ 'US,male,Orders.amount': 6,
533
+ 'US,female,Orders.count': 7,
534
+ 'US,female,Orders.amount': 8,
535
+ },
536
+ ]);
537
+ });
538
+ test('measures on `x` axis', () => {
539
+ const pivotConfig = {
540
+ x: ['Users.gender', 'measures'],
541
+ y: ['Users.country'],
542
+ };
543
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([
544
+ {
545
+ 'Users.gender': 'male',
546
+ measures: 'Orders.count',
547
+ US: 5,
548
+ Germany: 10,
549
+ },
550
+ {
551
+ 'Users.gender': 'male',
552
+ measures: 'Orders.amount',
553
+ US: 6,
554
+ Germany: 11,
555
+ },
556
+ {
557
+ 'Users.gender': 'female',
558
+ measures: 'Orders.count',
559
+ US: 7,
560
+ Germany: 12,
561
+ },
562
+ {
563
+ 'Users.gender': 'female',
564
+ measures: 'Orders.amount',
565
+ US: 8,
566
+ Germany: 13,
567
+ },
568
+ ]);
569
+ });
570
+ });
571
+ describe('it works with no data', () => {
572
+ const resultSet = new ResultSet({
573
+ query: {
574
+ measures: ['Orders.count'],
575
+ dimensions: ['Users.country', 'Users.gender'],
576
+ },
577
+ data: [],
578
+ annotation: {
579
+ measures: {
580
+ 'Orders.count': {
581
+ title: 'Orders Count',
582
+ shortTitle: 'Count',
583
+ type: 'number',
584
+ },
585
+ },
586
+ dimensions: {
587
+ 'Users.country': {
588
+ title: 'Users Country',
589
+ shortTitle: 'Country',
590
+ type: 'string',
591
+ },
592
+ 'Users.gender': {
593
+ title: 'Users Gender',
594
+ shortTitle: 'Gender',
595
+ type: 'string',
596
+ },
597
+ },
598
+ segments: {},
599
+ timeDimensions: {},
600
+ },
601
+ });
602
+ test('all dimensions on `x` axis', () => {
603
+ const pivotConfig = {
604
+ x: ['Users.country', 'Users.gender'],
605
+ y: ['measures'],
606
+ };
607
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([]);
608
+ expect(resultSet.tableColumns(pivotConfig)).toEqual([
609
+ {
610
+ dataIndex: 'Users.country',
611
+ format: undefined,
612
+ key: 'Users.country',
613
+ meta: undefined,
614
+ shortTitle: 'Country',
615
+ title: 'Users Country',
616
+ type: 'string',
617
+ },
618
+ {
619
+ dataIndex: 'Users.gender',
620
+ format: undefined,
621
+ key: 'Users.gender',
622
+ meta: undefined,
623
+ shortTitle: 'Gender',
624
+ title: 'Users Gender',
625
+ type: 'string',
626
+ },
627
+ {
628
+ dataIndex: 'Orders.count',
629
+ format: undefined,
630
+ key: 'Orders.count',
631
+ meta: undefined,
632
+ shortTitle: 'Count',
633
+ title: 'Orders Count',
634
+ type: 'number',
635
+ },
636
+ ]);
637
+ });
638
+ test('one dimension on `y` axis', () => {
639
+ const pivotConfig = {
640
+ x: ['Users.gender'],
641
+ y: ['Users.country', 'measures'],
642
+ };
643
+ expect(resultSet.tablePivot(pivotConfig)).toEqual([]);
644
+ expect(resultSet.tableColumns(pivotConfig)).toEqual([
645
+ {
646
+ dataIndex: 'Users.gender',
647
+ format: undefined,
648
+ key: 'Users.gender',
649
+ meta: undefined,
650
+ shortTitle: 'Gender',
651
+ title: 'Users Gender',
652
+ type: 'string',
653
+ },
654
+ {
655
+ dataIndex: 'Orders.count',
656
+ format: undefined,
657
+ key: 'Orders.count',
658
+ meta: undefined,
659
+ shortTitle: 'Count',
660
+ title: 'Orders Count',
661
+ type: 'number',
662
+ },
663
+ ]);
664
+ });
665
+ });
666
+ test('order of values is preserved', () => {
667
+ const resultSet = new ResultSet({
668
+ query: {
669
+ measures: [
670
+ 'Branch.count'
671
+ ],
672
+ dimensions: [
673
+ 'Tenant.number'
674
+ ],
675
+ order: [
676
+ {
677
+ id: 'Tenant.number',
678
+ desc: true
679
+ }
680
+ ],
681
+ filters: [],
682
+ timezone: 'UTC'
683
+ },
684
+ data: [
685
+ {
686
+ 'Tenant.number': '6',
687
+ 'Branch.count': '2'
688
+ },
689
+ {
690
+ 'Tenant.number': '1',
691
+ 'Branch.count': '2'
692
+ },
693
+ ],
694
+ annotation: {
695
+ measures: {
696
+ 'Branch.count': {
697
+ type: 'number'
698
+ }
699
+ },
700
+ dimensions: {
701
+ 'Tenant.number': {
702
+ title: 'Tenant Number',
703
+ shortTitle: 'Number',
704
+ type: 'string'
705
+ }
706
+ },
707
+ segments: {},
708
+ timeDimensions: {}
709
+ }
710
+ });
711
+ expect(resultSet.tableColumns({
712
+ x: [],
713
+ y: [
714
+ 'Tenant.number'
715
+ ]
716
+ })).toEqual([
717
+ {
718
+ key: '6',
719
+ type: 'string',
720
+ title: 'Tenant Number 6',
721
+ shortTitle: '6',
722
+ format: undefined,
723
+ meta: undefined,
724
+ children: [
725
+ {
726
+ key: 'Branch.count',
727
+ type: 'number',
728
+ dataIndex: '6,Branch.count',
729
+ title: 'Branch.count',
730
+ shortTitle: 'Branch.count',
731
+ format: undefined,
732
+ meta: undefined,
733
+ }
734
+ ]
735
+ },
736
+ {
737
+ key: '1',
738
+ type: 'string',
739
+ title: 'Tenant Number 1',
740
+ shortTitle: '1',
741
+ format: undefined,
742
+ meta: undefined,
743
+ children: [
744
+ {
745
+ key: 'Branch.count',
746
+ type: 'number',
747
+ dataIndex: '1,Branch.count',
748
+ title: 'Branch.count',
749
+ shortTitle: 'Branch.count',
750
+ format: undefined,
751
+ meta: undefined,
752
+ }
753
+ ]
754
+ }
755
+ ]);
756
+ });
757
+ });