diff --git a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts index 5b74e0aeb161..39cfec91250e 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts @@ -67,11 +67,8 @@ export default function buildQuery(formData: QueryFormData) { fd, queryObject, ) - ? timeComparePivotOperator(fd, queryObject) - : pivotOperator(fd, { - ...queryObject, - columns: fd.groupby, - }); + ? timeComparePivotOperator(fd, { ...queryObject, columns: fd.groupby }) + : pivotOperator(fd, { ...queryObject, columns: fd.groupby }); const tmpQueryObject = { ...queryObject, diff --git a/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts index 066b796b5974..af23bd927f5f 100644 --- a/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts +++ b/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/buildQuery.test.ts @@ -198,6 +198,21 @@ test('should compile AA in query A', () => { // time comparison expect(query.time_offsets).toEqual(['1 years ago']); + // pivot + expect( + query.post_processing?.find(operator => operator?.operation === 'pivot'), + ).toEqual({ + operation: 'pivot', + options: { + index: ['__timestamp'], + columns: ['foo'], + drop_missing_columns: false, + aggregates: { + 'sum(sales)': { operator: 'mean' }, + 'sum(sales)__1 years ago': { operator: 'mean' }, + }, + }, + }); // cumsum expect( // prettier-ignore @@ -384,20 +399,14 @@ test('should convert a queryObject with x-axis although FF is disabled', () => { }); test("shouldn't convert a queryObject with axis although FF is enabled", () => { - let windowSpy: any; - - beforeAll(() => { + const windowSpy = jest + .spyOn(window, 'window', 'get') // @ts-ignore - windowSpy = jest.spyOn(window, 'window', 'get').mockImplementation(() => ({ + .mockImplementation(() => ({ featureFlags: { GENERIC_CHART_AXES: true, }, })); - }); - - afterAll(() => { - windowSpy.mockRestore(); - }); const { queries } = buildQuery(formDataMixedChart); expect(queries[0]).toEqual( @@ -468,4 +477,40 @@ test("shouldn't convert a queryObject with axis although FF is enabled", () => { ], }), ); + + windowSpy.mockRestore(); +}); + +test('ensure correct pivot columns with GENERIC_CHART_AXES enabled', () => { + const windowSpy = jest + .spyOn(window, 'window', 'get') + // @ts-ignore + .mockImplementation(() => ({ + featureFlags: { + GENERIC_CHART_AXES: true, + }, + })); + + const query = buildQuery({ ...formDataMixedChartWithAA, x_axis: 'ds' }) + .queries[0]; + + expect(query.time_offsets).toEqual(['1 years ago']); + + // pivot + expect( + query.post_processing?.find(operator => operator?.operation === 'pivot'), + ).toEqual({ + operation: 'pivot', + options: { + index: ['ds'], + columns: ['foo'], + drop_missing_columns: false, + aggregates: { + 'sum(sales)': { operator: 'mean' }, + 'sum(sales)__1 years ago': { operator: 'mean' }, + }, + }, + }); + + windowSpy.mockRestore(); });