@lightdash/common 0.2882.0 → 0.2883.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.
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/pivot/derivePivotConfigFromChart.d.ts.map +1 -1
- package/dist/cjs/pivot/derivePivotConfigFromChart.js +2 -1
- package/dist/cjs/pivot/derivePivotConfigFromChart.js.map +1 -1
- package/dist/cjs/pivot/derivePivotConfigFromChart.test.js +227 -0
- package/dist/cjs/pivot/derivePivotConfigFromChart.test.js.map +1 -1
- package/dist/cjs/pivot/pivotQueryResults.test.js +45 -0
- package/dist/cjs/pivot/pivotQueryResults.test.js.map +1 -1
- package/dist/cjs/pivot/pivotResultsAsCsv.test.js +56 -0
- package/dist/cjs/pivot/pivotResultsAsCsv.test.js.map +1 -1
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/pivot/derivePivotConfigFromChart.d.ts.map +1 -1
- package/dist/esm/pivot/derivePivotConfigFromChart.js +2 -1
- package/dist/esm/pivot/derivePivotConfigFromChart.js.map +1 -1
- package/dist/esm/pivot/derivePivotConfigFromChart.test.js +228 -1
- package/dist/esm/pivot/derivePivotConfigFromChart.test.js.map +1 -1
- package/dist/esm/pivot/pivotQueryResults.test.js +45 -0
- package/dist/esm/pivot/pivotQueryResults.test.js.map +1 -1
- package/dist/esm/pivot/pivotResultsAsCsv.test.js +56 -0
- package/dist/esm/pivot/pivotResultsAsCsv.test.js.map +1 -1
- package/dist/types/.tsbuildinfo +1 -1
- package/dist/types/pivot/derivePivotConfigFromChart.d.ts.map +1 -1
- package/dist/types/pivot/derivePivotConfigFromChart.js +2 -1
- package/dist/types/pivot/derivePivotConfigFromChart.js.map +1 -1
- package/dist/types/pivot/derivePivotConfigFromChart.test.js +228 -1
- package/dist/types/pivot/derivePivotConfigFromChart.test.js.map +1 -1
- package/dist/types/pivot/pivotQueryResults.test.js +45 -0
- package/dist/types/pivot/pivotQueryResults.test.js.map +1 -1
- package/dist/types/pivot/pivotResultsAsCsv.test.js +56 -0
- package/dist/types/pivot/pivotResultsAsCsv.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -74,6 +74,62 @@ describe('pivotResultsAsCsv', () => {
|
|
|
74
74
|
const allValues = result.flat();
|
|
75
75
|
expect(allValues).toContain('Page Views');
|
|
76
76
|
});
|
|
77
|
+
it('returns empty cells for rows missing an expected pivot field instead of throwing (#16866)', () => {
|
|
78
|
+
// https://github.com/lightdash/lightdash/issues/16866
|
|
79
|
+
// Repro: a CSV export with a pivoted chart whose result rows are
|
|
80
|
+
// missing one of the value-column fields used to throw
|
|
81
|
+
// `Cannot get key 'X' from object` deep inside the pivot pipeline,
|
|
82
|
+
// crashing scheduled deliveries silently.
|
|
83
|
+
// Expectation: pivotResultsAsCsv tolerates missing fields by
|
|
84
|
+
// emitting empty/placeholder cells, so the export still succeeds.
|
|
85
|
+
// The safe accessor lives in pivotResultsAsData and reads
|
|
86
|
+
// `row[fieldId]?.value?.raw ?? ''` — locking the empty-string
|
|
87
|
+
// fallback prevents a regression that re-introduces the throw.
|
|
88
|
+
const partialRows = RESULT_ROWS_2DIM_2METRIC.map((row, idx) => {
|
|
89
|
+
if (idx === 1) {
|
|
90
|
+
// Strip the devices metric on one row to simulate a
|
|
91
|
+
// results-set missing a field that valuesColumns expects.
|
|
92
|
+
const { devices, ...rest } = row;
|
|
93
|
+
return rest;
|
|
94
|
+
}
|
|
95
|
+
return row;
|
|
96
|
+
});
|
|
97
|
+
const callPivot = () => pivotResultsAsCsv({
|
|
98
|
+
pivotConfig: {
|
|
99
|
+
pivotDimensions: ['page'],
|
|
100
|
+
metricsAsRows: false,
|
|
101
|
+
},
|
|
102
|
+
rows: partialRows,
|
|
103
|
+
itemMap: buildItemsMap(),
|
|
104
|
+
metricQuery: {
|
|
105
|
+
exploreName: 'test',
|
|
106
|
+
...METRIC_QUERY_2DIM_2METRIC,
|
|
107
|
+
filters: {},
|
|
108
|
+
sorts: [],
|
|
109
|
+
limit: 500,
|
|
110
|
+
customDimensions: [],
|
|
111
|
+
metricOverrides: {},
|
|
112
|
+
dimensionOverrides: {},
|
|
113
|
+
},
|
|
114
|
+
customLabels: undefined,
|
|
115
|
+
onlyRaw: false,
|
|
116
|
+
maxColumnLimit: 60,
|
|
117
|
+
pivotDetails: null,
|
|
118
|
+
undefinedCharacter: '',
|
|
119
|
+
});
|
|
120
|
+
expect(callPivot).not.toThrow();
|
|
121
|
+
const result = callPivot();
|
|
122
|
+
// The output is still a 2D string array of the same surface shape.
|
|
123
|
+
expect(Array.isArray(result)).toBe(true);
|
|
124
|
+
result.forEach((row) => {
|
|
125
|
+
expect(Array.isArray(row)).toBe(true);
|
|
126
|
+
row.forEach((cell) => {
|
|
127
|
+
// No undefined cells leak through — the safe accessor
|
|
128
|
+
// returns empty string when the source field is missing.
|
|
129
|
+
expect(typeof cell).toBe('string');
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
});
|
|
77
133
|
it('produces same number of columns as pivotResultsAsData', () => {
|
|
78
134
|
const params = {
|
|
79
135
|
pivotConfig: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotResultsAsCsv.test.js","sourceRoot":"","sources":["../../../src/pivot/pivotResultsAsCsv.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pivotResultsAsCsv.test.js","sourceRoot":"","sources":["../../../src/pivot/pivotResultsAsCsv.test.ts"],"names":[],"mappings":"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"}
|