diff --git a/packages/grafana-prometheus/src/language_provider.test.ts b/packages/grafana-prometheus/src/language_provider.test.ts index 48ed7276693..2b0c7edcaf3 100644 --- a/packages/grafana-prometheus/src/language_provider.test.ts +++ b/packages/grafana-prometheus/src/language_provider.test.ts @@ -470,6 +470,34 @@ describe('Language completion provider', () => { ) ); }); + + it('should set `labelKeys` on language provider', async () => { + const mockQueries: PromQuery[] = [ + { + refId: 'C', + expr: 'go_gc_pauses_seconds_bucket', + }, + ]; + const fetchLabel = languageProvider.fetchLabels; + const requestSpy = jest.spyOn(languageProvider, 'request').mockResolvedValue(['foo', 'bar']); + await fetchLabel(tr, mockQueries); + expect(requestSpy).toHaveBeenCalled(); + expect(languageProvider.labelKeys).toEqual(['bar', 'foo']); + }); + + it('should return labelKeys from request', async () => { + const mockQueries: PromQuery[] = [ + { + refId: 'C', + expr: 'go_gc_pauses_seconds_bucket', + }, + ]; + const fetchLabel = languageProvider.fetchLabels; + const requestSpy = jest.spyOn(languageProvider, 'request').mockResolvedValue(['foo', 'bar']); + const keys = await fetchLabel(tr, mockQueries); + expect(requestSpy).toHaveBeenCalled(); + expect(keys).toEqual(['bar', 'foo']); + }); }); describe('with GET', () => { diff --git a/packages/grafana-prometheus/src/language_provider.ts b/packages/grafana-prometheus/src/language_provider.ts index 749c579296e..c75a21c83de 100644 --- a/packages/grafana-prometheus/src/language_provider.ts +++ b/packages/grafana-prometheus/src/language_provider.ts @@ -251,6 +251,7 @@ export default class PromQlLanguageProvider extends LanguageProvider { const res = await this.request(url, [], searchParams, this.getDefaultCacheHeaders()); if (Array.isArray(res)) { this.labelKeys = res.slice().sort(); + return res.slice().sort(); } return [];