From e6e8611d5234055c5690ae3809c8e2fa4cdd55f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 29 Aug 2019 16:25:10 +0200 Subject: [PATCH] Explore: Fixed issue in PanelQuery state arround cancellation (#18771) * Explore: Fixed issue in PanelQuery state arround cancellation * Added unit test * Fixed typescript issues in test --- .../dashboard/state/PanelQueryState.test.ts | 15 ++++++++++++++- .../features/dashboard/state/PanelQueryState.ts | 2 +- public/app/features/explore/QueryEditor.tsx | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/public/app/features/dashboard/state/PanelQueryState.test.ts b/public/app/features/dashboard/state/PanelQueryState.test.ts index c1dbbbfb66a..8f6d57cfafc 100644 --- a/public/app/features/dashboard/state/PanelQueryState.test.ts +++ b/public/app/features/dashboard/state/PanelQueryState.test.ts @@ -1,7 +1,7 @@ import { toDataQueryError, PanelQueryState, getProcessedDataFrames } from './PanelQueryState'; import { MockDataSourceApi } from 'test/mocks/datasource_srv'; import { LoadingState, getDataFrameRow } from '@grafana/data'; -import { DataQueryResponse } from '@grafana/ui'; +import { DataQueryResponse, DataQueryRequest, DataQuery } from '@grafana/ui'; import { getQueryOptions } from 'test/helpers/getQueryOptions'; describe('PanelQueryState', () => { @@ -54,6 +54,19 @@ describe('PanelQueryState', () => { }); }); +describe('When cancelling request', () => { + it('Should call rejector', () => { + const state = new PanelQueryState(); + state.request = {} as DataQueryRequest; + (state as any).rejector = (obj: any) => { + expect(obj.cancelled).toBe(true); + expect(obj.message).toBe('OHH'); + }; + + state.cancel('OHH'); + }); +}); + describe('getProcessedDataFrame', () => { it('converts timeseries to table skipping nulls', () => { const input1 = { diff --git a/public/app/features/dashboard/state/PanelQueryState.ts b/public/app/features/dashboard/state/PanelQueryState.ts index 0a034c4af66..77be08179c1 100644 --- a/public/app/features/dashboard/state/PanelQueryState.ts +++ b/public/app/features/dashboard/state/PanelQueryState.ts @@ -79,7 +79,7 @@ export class PanelQueryState { // call rejector to reject the executor promise if (!request.endTime) { request.endTime = Date.now(); - this.rejector('Canceled:' + reason); + this.rejector({ cancelled: true, message: reason }); } // Cancel any open HTTP request with the same ID diff --git a/public/app/features/explore/QueryEditor.tsx b/public/app/features/explore/QueryEditor.tsx index de8706b0a21..023222891d2 100644 --- a/public/app/features/explore/QueryEditor.tsx +++ b/public/app/features/explore/QueryEditor.tsx @@ -62,6 +62,7 @@ export default class QueryEditor extends PureComponent { this.component = loader.load(this.element, scopeProps, template); this.angularScope = scopeProps.ctrl; + setTimeout(() => { this.props.onQueryChange(target); this.props.onExecuteQuery();