@lightdash/common 0.1369.1 → 0.1369.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,857 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pivotQueryResults_1 = require("./pivotQueryResults");
4
+ const pivotQueryResults_mock_1 = require("./pivotQueryResults.mock");
5
+ describe('Should pivot data', () => {
6
+ it('with 1 dimension, pivoted, metrics as cols (everything on columns)', () => {
7
+ const pivotConfig = {
8
+ pivotDimensions: ['page'],
9
+ metricsAsRows: false,
10
+ };
11
+ const expected = {
12
+ headerValueTypes: [
13
+ { type: 'dimension', fieldId: 'page' },
14
+ { type: 'metric' },
15
+ ],
16
+ headerValues: [
17
+ [
18
+ {
19
+ fieldId: 'page',
20
+ type: 'value',
21
+ value: { formatted: '/home', raw: '/home' },
22
+ colSpan: 2,
23
+ },
24
+ {
25
+ fieldId: 'page',
26
+ type: 'value',
27
+ value: { formatted: '/home', raw: '/home' },
28
+ colSpan: 0,
29
+ },
30
+ {
31
+ fieldId: 'page',
32
+ type: 'value',
33
+ value: { formatted: '/about', raw: '/about' },
34
+ colSpan: 2,
35
+ },
36
+ {
37
+ fieldId: 'page',
38
+ type: 'value',
39
+ value: { formatted: '/about', raw: '/about' },
40
+ colSpan: 0,
41
+ },
42
+ {
43
+ fieldId: 'page',
44
+ type: 'value',
45
+ value: { formatted: '/first-post', raw: '/first-post' },
46
+ colSpan: 2,
47
+ },
48
+ {
49
+ fieldId: 'page',
50
+ type: 'value',
51
+ value: { formatted: '/first-post', raw: '/first-post' },
52
+ colSpan: 0,
53
+ },
54
+ ],
55
+ [
56
+ { fieldId: 'views', type: 'label' },
57
+ { fieldId: 'devices', type: 'label' },
58
+ { fieldId: 'views', type: 'label' },
59
+ { fieldId: 'devices', type: 'label' },
60
+ { fieldId: 'views', type: 'label' },
61
+ { fieldId: 'devices', type: 'label' },
62
+ ],
63
+ ],
64
+ indexValueTypes: [],
65
+ indexValues: [],
66
+ dataColumnCount: 6,
67
+ dataValues: [
68
+ [
69
+ { raw: 6, formatted: '6.0' },
70
+ { raw: 7, formatted: '7.0' },
71
+ { raw: 12, formatted: '12.0' },
72
+ { raw: 0, formatted: '0.0' },
73
+ { raw: 11, formatted: '11.0' },
74
+ { raw: 1, formatted: '1.0' },
75
+ ],
76
+ ],
77
+ rowTotalFields: undefined,
78
+ rowTotals: undefined,
79
+ rowsCount: 1,
80
+ columnTotalFields: undefined,
81
+ columnTotals: undefined,
82
+ pivotConfig,
83
+ titleFields: [[{ direction: 'header', fieldId: 'page' }], [null]],
84
+ cellsCount: 7,
85
+ retrofitData: {
86
+ allCombinedData: [
87
+ {
88
+ page__views__0: {
89
+ value: { raw: 6, formatted: '6.0' },
90
+ },
91
+ page__devices__1: {
92
+ value: { raw: 7, formatted: '7.0' },
93
+ },
94
+ page__views__2: {
95
+ value: { raw: 12, formatted: '12.0' },
96
+ },
97
+ page__devices__3: {
98
+ value: { raw: 0, formatted: '0.0' },
99
+ },
100
+ page__views__4: {
101
+ value: { raw: 11, formatted: '11.0' },
102
+ },
103
+ page__devices__5: {
104
+ value: { raw: 1, formatted: '1.0' },
105
+ },
106
+ },
107
+ ],
108
+ pivotColumnInfo: [
109
+ {
110
+ baseId: 'views',
111
+ fieldId: 'page__views__0',
112
+ },
113
+ {
114
+ baseId: 'devices',
115
+ fieldId: 'page__devices__1',
116
+ },
117
+ {
118
+ baseId: 'views',
119
+ fieldId: 'page__views__2',
120
+ },
121
+ {
122
+ baseId: 'devices',
123
+ fieldId: 'page__devices__3',
124
+ },
125
+ {
126
+ baseId: 'views',
127
+ fieldId: 'page__views__4',
128
+ },
129
+ {
130
+ baseId: 'devices',
131
+ fieldId: 'page__devices__5',
132
+ },
133
+ ],
134
+ },
135
+ };
136
+ const result = (0, pivotQueryResults_1.pivotQueryResults)({
137
+ pivotConfig,
138
+ metricQuery: pivotQueryResults_mock_1.METRIC_QUERY_1DIM_2METRIC,
139
+ rows: pivotQueryResults_mock_1.RESULT_ROWS_1DIM_2METRIC,
140
+ options: { maxColumns: 60 },
141
+ getFieldLabel: (fieldId) => fieldId,
142
+ getField: (_fieldId) => undefined,
143
+ });
144
+ expect(result).toEqual(expected);
145
+ });
146
+ it('with 1 dimension, metrics as cols', () => {
147
+ const pivotConfig = {
148
+ pivotDimensions: [],
149
+ metricsAsRows: false,
150
+ };
151
+ const expected = {
152
+ headerValueTypes: [{ type: 'metric' }],
153
+ headerValues: [
154
+ [
155
+ { type: 'label', fieldId: 'views' },
156
+ { type: 'label', fieldId: 'devices' },
157
+ ],
158
+ ],
159
+ indexValueTypes: [{ type: 'dimension', fieldId: 'page' }],
160
+ indexValues: [
161
+ [
162
+ {
163
+ type: 'value',
164
+ fieldId: 'page',
165
+ value: { raw: '/home', formatted: '/home' },
166
+ colSpan: 1,
167
+ },
168
+ ],
169
+ [
170
+ {
171
+ type: 'value',
172
+ fieldId: 'page',
173
+ value: {
174
+ raw: '/about',
175
+ formatted: '/about',
176
+ },
177
+ colSpan: 1,
178
+ },
179
+ ],
180
+ [
181
+ {
182
+ type: 'value',
183
+ fieldId: 'page',
184
+ value: {
185
+ raw: '/first-post',
186
+ formatted: '/first-post',
187
+ },
188
+ colSpan: 1,
189
+ },
190
+ ],
191
+ ],
192
+ dataColumnCount: 2,
193
+ dataValues: [
194
+ [
195
+ { raw: 6, formatted: '6.0' },
196
+ { raw: 7, formatted: '7.0' },
197
+ ],
198
+ [
199
+ { raw: 12, formatted: '12.0' },
200
+ { raw: 0, formatted: '0.0' },
201
+ ],
202
+ [
203
+ { raw: 11, formatted: '11.0' },
204
+ { raw: 1, formatted: '1.0' },
205
+ ],
206
+ ],
207
+ pivotConfig,
208
+ titleFields: [[{ fieldId: 'page', direction: 'index' }]],
209
+ cellsCount: 3,
210
+ rowsCount: 3,
211
+ retrofitData: {
212
+ allCombinedData: [
213
+ {
214
+ page: { value: { raw: '/home', formatted: '/home' } },
215
+ views__0: {
216
+ value: { raw: 6, formatted: '6.0' },
217
+ },
218
+ devices__1: {
219
+ value: { raw: 7, formatted: '7.0' },
220
+ },
221
+ },
222
+ {
223
+ page: { value: { raw: '/about', formatted: '/about' } },
224
+ views__0: {
225
+ value: { raw: 12, formatted: '12.0' },
226
+ },
227
+ devices__1: {
228
+ value: { raw: 0, formatted: '0.0' },
229
+ },
230
+ },
231
+ {
232
+ page: {
233
+ value: {
234
+ raw: '/first-post',
235
+ formatted: '/first-post',
236
+ },
237
+ },
238
+ views__0: {
239
+ value: { raw: 11, formatted: '11.0' },
240
+ },
241
+ devices__1: {
242
+ value: { raw: 1, formatted: '1.0' },
243
+ },
244
+ },
245
+ ],
246
+ pivotColumnInfo: [
247
+ {
248
+ fieldId: 'page',
249
+ columnType: 'indexValue',
250
+ },
251
+ {
252
+ baseId: 'views',
253
+ fieldId: 'views__0',
254
+ },
255
+ {
256
+ baseId: 'devices',
257
+ fieldId: 'devices__1',
258
+ },
259
+ ],
260
+ },
261
+ };
262
+ const result = (0, pivotQueryResults_1.pivotQueryResults)({
263
+ pivotConfig,
264
+ metricQuery: pivotQueryResults_mock_1.METRIC_QUERY_1DIM_2METRIC,
265
+ rows: pivotQueryResults_mock_1.RESULT_ROWS_1DIM_2METRIC,
266
+ options: { maxColumns: 60 },
267
+ getFieldLabel: (fieldId) => fieldId,
268
+ getField: (_fieldId) => undefined,
269
+ });
270
+ expect(result).toEqual(expected);
271
+ });
272
+ it('with 1 dimension, 1 pivoted, metrics as rows', () => {
273
+ const pivotConfig = {
274
+ pivotDimensions: ['page'],
275
+ metricsAsRows: true,
276
+ };
277
+ const expected = {
278
+ headerValueTypes: [{ type: 'dimension', fieldId: 'page' }],
279
+ headerValues: [
280
+ [
281
+ {
282
+ type: 'value',
283
+ fieldId: 'page',
284
+ value: { raw: '/home', formatted: '/home' },
285
+ colSpan: 1,
286
+ },
287
+ {
288
+ type: 'value',
289
+ fieldId: 'page',
290
+ value: { raw: '/about', formatted: '/about' },
291
+ colSpan: 1,
292
+ },
293
+ {
294
+ type: 'value',
295
+ fieldId: 'page',
296
+ value: { raw: '/first-post', formatted: '/first-post' },
297
+ colSpan: 1,
298
+ },
299
+ ],
300
+ ],
301
+ indexValueTypes: [{ type: 'metric' }],
302
+ indexValues: [
303
+ [{ type: 'label', fieldId: 'views' }],
304
+ [{ type: 'label', fieldId: 'devices' }],
305
+ ],
306
+ dataColumnCount: 3,
307
+ dataValues: [
308
+ [
309
+ { raw: 6, formatted: '6.0' },
310
+ { raw: 12, formatted: '12.0' },
311
+ { raw: 11, formatted: '11.0' },
312
+ ],
313
+ [
314
+ { raw: 7, formatted: '7.0' },
315
+ { raw: 0, formatted: '0.0' },
316
+ { raw: 1, formatted: '1.0' },
317
+ ],
318
+ ],
319
+ pivotConfig: {
320
+ pivotDimensions: ['page'],
321
+ metricsAsRows: true,
322
+ },
323
+ titleFields: [[{ fieldId: 'page', direction: 'header' }]],
324
+ cellsCount: 4,
325
+ rowsCount: 2,
326
+ retrofitData: {
327
+ allCombinedData: [
328
+ {
329
+ 'label-0': {
330
+ value: { raw: 'views', formatted: 'views' },
331
+ },
332
+ page__0: {
333
+ value: { raw: 6, formatted: '6.0' },
334
+ },
335
+ page__1: {
336
+ value: { raw: 12, formatted: '12.0' },
337
+ },
338
+ page__2: {
339
+ value: { raw: 11, formatted: '11.0' },
340
+ },
341
+ },
342
+ {
343
+ 'label-0': {
344
+ value: { raw: 'devices', formatted: 'devices' },
345
+ },
346
+ page__0: {
347
+ value: { raw: 7, formatted: '7.0' },
348
+ },
349
+ page__1: {
350
+ value: { raw: 0, formatted: '0.0' },
351
+ },
352
+ page__2: {
353
+ value: { raw: 1, formatted: '1.0' },
354
+ },
355
+ },
356
+ ],
357
+ pivotColumnInfo: [
358
+ {
359
+ fieldId: 'label-0',
360
+ columnType: 'label',
361
+ },
362
+ {
363
+ baseId: 'page',
364
+ fieldId: 'page__0',
365
+ },
366
+ {
367
+ baseId: 'page',
368
+ fieldId: 'page__1',
369
+ },
370
+ {
371
+ baseId: 'page',
372
+ fieldId: 'page__2',
373
+ },
374
+ ],
375
+ },
376
+ };
377
+ const result = (0, pivotQueryResults_1.pivotQueryResults)({
378
+ pivotConfig,
379
+ metricQuery: pivotQueryResults_mock_1.METRIC_QUERY_1DIM_2METRIC,
380
+ rows: pivotQueryResults_mock_1.RESULT_ROWS_1DIM_2METRIC,
381
+ options: { maxColumns: 60 },
382
+ getFieldLabel: (fieldId) => fieldId,
383
+ getField: (_fieldId) => undefined,
384
+ });
385
+ expect(result).toEqual(expected);
386
+ });
387
+ it('with 2 dimensions, 1 pivoted, metrics as columns', () => {
388
+ const pivotConfig = {
389
+ pivotDimensions: ['site'],
390
+ metricsAsRows: false,
391
+ };
392
+ const expected = {
393
+ headerValueTypes: [
394
+ { type: 'dimension', fieldId: 'site' },
395
+ { type: 'metric' },
396
+ ],
397
+ headerValues: [
398
+ [
399
+ {
400
+ type: 'value',
401
+ fieldId: 'site',
402
+ value: { raw: 'blog', formatted: 'Blog' },
403
+ colSpan: 2,
404
+ },
405
+ {
406
+ type: 'value',
407
+ fieldId: 'site',
408
+ value: { raw: 'blog', formatted: 'Blog' },
409
+ colSpan: 0,
410
+ },
411
+ {
412
+ type: 'value',
413
+ fieldId: 'site',
414
+ value: { raw: 'docs', formatted: 'Docs' },
415
+ colSpan: 2,
416
+ },
417
+ {
418
+ type: 'value',
419
+ fieldId: 'site',
420
+ value: { raw: 'docs', formatted: 'Docs' },
421
+ colSpan: 0,
422
+ },
423
+ ],
424
+ [
425
+ { type: 'label', fieldId: 'views' },
426
+ { type: 'label', fieldId: 'devices' },
427
+ { type: 'label', fieldId: 'views' },
428
+ { type: 'label', fieldId: 'devices' },
429
+ ],
430
+ ],
431
+ indexValueTypes: [{ type: 'dimension', fieldId: 'page' }],
432
+ indexValues: [
433
+ [
434
+ {
435
+ type: 'value',
436
+ fieldId: 'page',
437
+ value: { raw: '/home', formatted: '/home' },
438
+ colSpan: 1,
439
+ },
440
+ ],
441
+ [
442
+ {
443
+ type: 'value',
444
+ fieldId: 'page',
445
+ value: { raw: '/about', formatted: '/about' },
446
+ colSpan: 1,
447
+ },
448
+ ],
449
+ [
450
+ {
451
+ type: 'value',
452
+ fieldId: 'page',
453
+ value: { raw: '/first-post', formatted: '/first-post' },
454
+ colSpan: 1,
455
+ },
456
+ ],
457
+ ],
458
+ dataColumnCount: 4,
459
+ dataValues: [
460
+ [
461
+ { raw: 6, formatted: '6.0' },
462
+ { raw: 7, formatted: '7.0' },
463
+ { raw: 2, formatted: '2.0' },
464
+ { raw: 10, formatted: '10.0' },
465
+ ],
466
+ [
467
+ { raw: 12, formatted: '12.0' },
468
+ { raw: 0, formatted: '0.0' },
469
+ { raw: 2, formatted: '2.0' },
470
+ { raw: 13, formatted: '13.0' },
471
+ ],
472
+ [
473
+ { raw: 11, formatted: '11.0' },
474
+ { raw: 1, formatted: '1.0' },
475
+ null,
476
+ null,
477
+ ],
478
+ ],
479
+ pivotConfig: { pivotDimensions: ['site'], metricsAsRows: false },
480
+ titleFields: [
481
+ [{ fieldId: 'site', direction: 'header' }],
482
+ [{ fieldId: 'page', direction: 'index' }],
483
+ ],
484
+ columnTotals: undefined,
485
+ rowTotals: undefined,
486
+ cellsCount: 5,
487
+ rowsCount: 3,
488
+ retrofitData: {
489
+ allCombinedData: [
490
+ {
491
+ page: { value: { raw: '/home', formatted: '/home' } },
492
+ site__views__0: {
493
+ value: { raw: 6, formatted: '6.0' },
494
+ },
495
+ site__devices__1: {
496
+ value: { raw: 7, formatted: '7.0' },
497
+ },
498
+ site__views__2: {
499
+ value: { raw: 2, formatted: '2.0' },
500
+ },
501
+ site__devices__3: {
502
+ value: { raw: 10, formatted: '10.0' },
503
+ },
504
+ },
505
+ {
506
+ page: { value: { raw: '/about', formatted: '/about' } },
507
+ site__views__0: {
508
+ value: { raw: 12, formatted: '12.0' },
509
+ },
510
+ site__devices__1: {
511
+ value: { raw: 0, formatted: '0.0' },
512
+ },
513
+ site__views__2: {
514
+ value: { raw: 2, formatted: '2.0' },
515
+ },
516
+ site__devices__3: {
517
+ value: { raw: 13, formatted: '13.0' },
518
+ },
519
+ },
520
+ {
521
+ page: {
522
+ value: {
523
+ raw: '/first-post',
524
+ formatted: '/first-post',
525
+ },
526
+ },
527
+ site__views__0: {
528
+ value: { raw: 11, formatted: '11.0' },
529
+ },
530
+ site__devices__1: {
531
+ value: { raw: 1, formatted: '1.0' },
532
+ },
533
+ },
534
+ ],
535
+ pivotColumnInfo: [
536
+ {
537
+ fieldId: 'page',
538
+ columnType: 'indexValue',
539
+ },
540
+ {
541
+ baseId: 'views',
542
+ fieldId: 'site__views__0',
543
+ },
544
+ {
545
+ baseId: 'devices',
546
+ fieldId: 'site__devices__1',
547
+ },
548
+ {
549
+ baseId: 'views',
550
+ fieldId: 'site__views__2',
551
+ },
552
+ {
553
+ baseId: 'devices',
554
+ fieldId: 'site__devices__3',
555
+ },
556
+ ],
557
+ },
558
+ };
559
+ const result = (0, pivotQueryResults_1.pivotQueryResults)({
560
+ pivotConfig,
561
+ metricQuery: pivotQueryResults_mock_1.METRIC_QUERY_2DIM_2METRIC,
562
+ rows: pivotQueryResults_mock_1.RESULT_ROWS_2DIM_2METRIC,
563
+ options: { maxColumns: 60 },
564
+ getFieldLabel: (fieldId) => fieldId,
565
+ getField: (_fieldId) => undefined,
566
+ });
567
+ expect(result).toEqual(expected);
568
+ });
569
+ it('with 2 dimensions, 1 pivoted, metrics as rows with totals', () => {
570
+ const pivotConfig = {
571
+ pivotDimensions: ['site'],
572
+ metricsAsRows: true,
573
+ rowTotals: true,
574
+ };
575
+ const expected = {
576
+ headerValueTypes: [{ type: 'dimension', fieldId: 'site' }],
577
+ headerValues: [
578
+ [
579
+ {
580
+ type: 'value',
581
+ fieldId: 'site',
582
+ value: { raw: 'blog', formatted: 'Blog' },
583
+ colSpan: 1,
584
+ },
585
+ {
586
+ type: 'value',
587
+ fieldId: 'site',
588
+ value: { raw: 'docs', formatted: 'Docs' },
589
+ colSpan: 1,
590
+ },
591
+ ],
592
+ ],
593
+ indexValueTypes: [
594
+ { type: 'dimension', fieldId: 'page' },
595
+ { type: 'metric' },
596
+ ],
597
+ indexValues: [
598
+ [
599
+ {
600
+ type: 'value',
601
+ fieldId: 'page',
602
+ value: { raw: '/home', formatted: '/home' },
603
+ colSpan: 1,
604
+ },
605
+ { type: 'label', fieldId: 'views' },
606
+ ],
607
+ [
608
+ {
609
+ type: 'value',
610
+ fieldId: 'page',
611
+ value: { raw: '/home', formatted: '/home' },
612
+ colSpan: 1,
613
+ },
614
+ { type: 'label', fieldId: 'devices' },
615
+ ],
616
+ [
617
+ {
618
+ type: 'value',
619
+ fieldId: 'page',
620
+ value: {
621
+ raw: '/about',
622
+ formatted: '/about',
623
+ },
624
+ colSpan: 1,
625
+ },
626
+ { type: 'label', fieldId: 'views' },
627
+ ],
628
+ [
629
+ {
630
+ type: 'value',
631
+ fieldId: 'page',
632
+ value: {
633
+ raw: '/about',
634
+ formatted: '/about',
635
+ },
636
+ colSpan: 1,
637
+ },
638
+ { type: 'label', fieldId: 'devices' },
639
+ ],
640
+ [
641
+ {
642
+ type: 'value',
643
+ fieldId: 'page',
644
+ value: {
645
+ raw: '/first-post',
646
+ formatted: '/first-post',
647
+ },
648
+ colSpan: 1,
649
+ },
650
+ { type: 'label', fieldId: 'views' },
651
+ ],
652
+ [
653
+ {
654
+ type: 'value',
655
+ fieldId: 'page',
656
+ value: { raw: '/first-post', formatted: '/first-post' },
657
+ colSpan: 1,
658
+ },
659
+ { type: 'label', fieldId: 'devices' },
660
+ ],
661
+ ],
662
+ dataColumnCount: 2,
663
+ dataValues: [
664
+ [
665
+ { raw: 6, formatted: '6.0' },
666
+ { raw: 2, formatted: '2.0' },
667
+ ],
668
+ [
669
+ { raw: 7, formatted: '7.0' },
670
+ { raw: 10, formatted: '10.0' },
671
+ ],
672
+ [
673
+ { raw: 12, formatted: '12.0' },
674
+ { raw: 2, formatted: '2.0' },
675
+ ],
676
+ [
677
+ { raw: 0, formatted: '0.0' },
678
+ { raw: 13, formatted: '13.0' },
679
+ ],
680
+ [{ raw: 11, formatted: '11.0' }, null],
681
+ [{ raw: 1, formatted: '1.0' }, null],
682
+ ],
683
+ pivotConfig: {
684
+ pivotDimensions: ['site'],
685
+ metricsAsRows: true,
686
+ rowTotals: true,
687
+ },
688
+ retrofitData: {
689
+ allCombinedData: [
690
+ {
691
+ page: { value: { raw: '/home', formatted: '/home' } },
692
+ 'label-1': {
693
+ value: { raw: 'views', formatted: 'views' },
694
+ },
695
+ site__0: {
696
+ value: { raw: 6, formatted: '6.0' },
697
+ },
698
+ site__1: {
699
+ value: { raw: 2, formatted: '2.0' },
700
+ },
701
+ },
702
+ {
703
+ page: { value: { raw: '/home', formatted: '/home' } },
704
+ 'label-1': {
705
+ value: { raw: 'devices', formatted: 'devices' },
706
+ },
707
+ site__0: {
708
+ value: { raw: 7, formatted: '7.0' },
709
+ },
710
+ site__1: {
711
+ value: { raw: 10, formatted: '10.0' },
712
+ },
713
+ },
714
+ {
715
+ page: { value: { raw: '/about', formatted: '/about' } },
716
+ 'label-1': {
717
+ value: { raw: 'views', formatted: 'views' },
718
+ },
719
+ site__0: {
720
+ value: { raw: 12, formatted: '12.0' },
721
+ },
722
+ site__1: {
723
+ value: { raw: 2, formatted: '2.0' },
724
+ },
725
+ },
726
+ {
727
+ page: { value: { raw: '/about', formatted: '/about' } },
728
+ 'label-1': {
729
+ value: { raw: 'devices', formatted: 'devices' },
730
+ },
731
+ site__0: {
732
+ value: { raw: 0, formatted: '0.0' },
733
+ },
734
+ site__1: {
735
+ value: { raw: 13, formatted: '13.0' },
736
+ },
737
+ },
738
+ {
739
+ page: {
740
+ value: {
741
+ raw: '/first-post',
742
+ formatted: '/first-post',
743
+ },
744
+ },
745
+ 'label-1': {
746
+ value: { raw: 'views', formatted: 'views' },
747
+ },
748
+ site__0: {
749
+ value: { raw: 11, formatted: '11.0' },
750
+ },
751
+ },
752
+ {
753
+ page: {
754
+ value: {
755
+ raw: '/first-post',
756
+ formatted: '/first-post',
757
+ },
758
+ },
759
+ 'label-1': {
760
+ value: { raw: 'devices', formatted: 'devices' },
761
+ },
762
+ site__0: {
763
+ value: { raw: 1, formatted: '1.0' },
764
+ },
765
+ },
766
+ ],
767
+ pivotColumnInfo: [
768
+ {
769
+ baseId: undefined,
770
+ fieldId: 'page',
771
+ columnType: 'indexValue',
772
+ underlyingId: undefined,
773
+ },
774
+ {
775
+ baseId: undefined,
776
+ fieldId: 'label-1',
777
+ columnType: 'label',
778
+ underlyingId: undefined,
779
+ },
780
+ {
781
+ baseId: 'site',
782
+ columnType: undefined,
783
+ fieldId: 'site__0',
784
+ underlyingId: undefined,
785
+ },
786
+ {
787
+ baseId: 'site',
788
+ columnType: undefined,
789
+ fieldId: 'site__1',
790
+ underlyingId: undefined,
791
+ },
792
+ {
793
+ baseId: 'row-total-0',
794
+ fieldId: 'row-total-0',
795
+ underlyingId: undefined,
796
+ columnType: 'rowTotal',
797
+ },
798
+ ],
799
+ },
800
+ titleFields: [
801
+ [
802
+ { fieldId: 'page', direction: 'index' },
803
+ { fieldId: 'site', direction: 'header' },
804
+ ],
805
+ ],
806
+ columnTotalFields: undefined,
807
+ rowTotalFields: [[{ fieldId: undefined }]],
808
+ columnTotals: undefined,
809
+ rowTotals: [[8], [17], [14], [13], [11], [1]],
810
+ cellsCount: 5,
811
+ rowsCount: 6,
812
+ };
813
+ const result = (0, pivotQueryResults_1.pivotQueryResults)({
814
+ pivotConfig,
815
+ metricQuery: pivotQueryResults_mock_1.METRIC_QUERY_2DIM_2METRIC,
816
+ rows: pivotQueryResults_mock_1.RESULT_ROWS_2DIM_2METRIC,
817
+ options: { maxColumns: 60 },
818
+ getFieldLabel: (fieldId) => fieldId,
819
+ getField: (_fieldId) => undefined,
820
+ });
821
+ expect(result).toStrictEqual(expected);
822
+ });
823
+ it.skip('with 0 dimensions and 2 metrics as columns', () => {
824
+ const pivotConfig = {
825
+ pivotDimensions: [],
826
+ metricsAsRows: false,
827
+ };
828
+ const expected = {
829
+ headerValueTypes: [{ type: 'metric' }],
830
+ headerValues: [
831
+ [
832
+ { raw: 'views', formatted: 'views' },
833
+ { raw: 'devices', formatted: 'devices' },
834
+ ],
835
+ ],
836
+ indexValueTypes: [],
837
+ indexValues: [],
838
+ dataColumnCount: 2,
839
+ dataValues: [
840
+ [
841
+ { raw: 6, formatted: '6.0' },
842
+ { raw: 7, formatted: '7.0' },
843
+ ],
844
+ ],
845
+ pivotConfig,
846
+ };
847
+ const results = (0, pivotQueryResults_1.pivotQueryResults)({
848
+ pivotConfig,
849
+ metricQuery: pivotQueryResults_mock_1.METRIC_QUERY_0DIM_2METRIC,
850
+ rows: pivotQueryResults_mock_1.RESULT_ROWS_0DIM_2METRIC,
851
+ options: { maxColumns: 60 },
852
+ getFieldLabel: (fieldId) => fieldId,
853
+ getField: (_fieldId) => undefined,
854
+ });
855
+ expect(results).toStrictEqual(expected);
856
+ });
857
+ });