fix(table): Use extras in queries (#30335)

This commit is contained in:
Antonio Rivero
2024-09-19 16:45:39 +02:00
committed by GitHub
parent 68594d97cb
commit 6c2bd2a968
2 changed files with 56 additions and 9 deletions

View File

@@ -25,6 +25,28 @@ const basicFormData: TableChartFormData = {
datasource: '11__table',
};
const extraQueryFormData: TableChartFormData = {
...basicFormData,
time_grain_sqla: TimeGranularity.MONTH,
groupby: ['col1'],
query_mode: QueryMode.Aggregate,
show_totals: true,
metrics: ['aaa', 'aaa'],
adhoc_filters: [
{
expressionType: 'SQL',
sqlExpression: "status IN ('In Process')",
clause: 'WHERE',
subject: null,
operator: null,
comparator: null,
isExtra: false,
isNew: false,
datasourceWarning: false,
filterOptionName: 'filter_v8m9t9oq5re_ndzk6g5am7',
} as any,
],
};
describe('plugin-chart-table', () => {
describe('buildQuery', () => {
it('should add post-processing and ignore duplicate metrics', () => {
@@ -114,5 +136,26 @@ describe('plugin-chart-table', () => {
expressionType: 'SQL',
});
});
it('should include time_grain_sqla in extras if temporal colum is used and keep the rest', () => {
const { queries } = buildQuery({
...extraQueryFormData,
temporal_columns_lookup: { col1: true },
});
// Extras in regular query
expect(queries[0].extras?.time_grain_sqla).toEqual(TimeGranularity.MONTH);
expect(queries[0].extras?.where).toEqual("(status IN ('In Process'))");
// Extras in summary query
expect(queries[1].extras?.time_grain_sqla).toEqual(TimeGranularity.MONTH);
expect(queries[1].extras?.where).toEqual("(status IN ('In Process'))");
});
it('should not include time_grain_sqla in extras if temporal colum is not used and keep the rest', () => {
const { queries } = buildQuery(extraQueryFormData);
// Extras in regular query
expect(queries[0].extras?.time_grain_sqla).toBeUndefined();
expect(queries[0].extras?.where).toEqual("(status IN ('In Process'))");
// Extras in summary query
expect(queries[1].extras?.time_grain_sqla).toBeUndefined();
expect(queries[1].extras?.where).toEqual("(status IN ('In Process'))");
});
});
});