Alerting: Use original query time range when duplicating a query (#54805)

* Use original query time range when duplicating it

If there's no time range, then assign a default one

* Add tests

* Import default relative time range from common lib
This commit is contained in:
Virginia Cepeda 2022-09-09 08:34:38 -03:00 committed by GitHub
parent 096fc76e23
commit d3a70de962
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 2 deletions

View File

@ -0,0 +1,49 @@
import { getDefaultRelativeTimeRange } from '@grafana/data';
import { QueryEditor } from './QueryEditor';
const onChangeMock = jest.fn();
describe('Query Editor', () => {
it('should maintain the original query time range when duplicating it', () => {
const query = {
refId: 'A',
queryType: '',
datasourceUid: '',
model: { refId: 'A', hide: false },
relativeTimeRange: { from: 100, to: 0 },
};
const queryEditor = new QueryEditor({
onChange: onChangeMock,
value: [query],
});
queryEditor.onDuplicateQuery(query);
expect(onChangeMock).toHaveBeenCalledWith([
query,
{ ...query, ...{ refId: 'B', model: { refId: 'B', hide: false } } },
]);
});
it('should use the default query time range if none is set when duplicating a query', () => {
const query = {
refId: 'A',
queryType: '',
datasourceUid: '',
model: { refId: 'A', hide: false },
};
const queryEditor = new QueryEditor({
onChange: onChangeMock,
value: [query],
});
queryEditor.onDuplicateQuery(query);
const defaultRange = getDefaultRelativeTimeRange();
expect(onChangeMock).toHaveBeenCalledWith([
query,
{ ...query, ...{ refId: 'B', relativeTimeRange: defaultRange, model: { refId: 'B', hide: false } } },
]);
});
});

View File

@ -180,7 +180,10 @@ export class QueryEditor extends PureComponent<Props, State> {
}
}
const addQuery = (queries: AlertQuery[], queryToAdd: Pick<AlertQuery, 'model' | 'datasourceUid'>): AlertQuery[] => {
const addQuery = (
queries: AlertQuery[],
queryToAdd: Pick<AlertQuery, 'model' | 'datasourceUid' | 'relativeTimeRange'>
): AlertQuery[] => {
const refId = getNextRefIdChar(queries);
const query: AlertQuery = {
@ -192,7 +195,7 @@ const addQuery = (queries: AlertQuery[], queryToAdd: Pick<AlertQuery, 'model' |
hide: false,
refId,
},
relativeTimeRange: defaultTimeRange(queryToAdd.model),
relativeTimeRange: queryToAdd.relativeTimeRange || defaultTimeRange(queryToAdd.model),
};
return [...queries, query];