diff --git a/public/app/plugins/datasource/prometheus/result_transformer.ts b/public/app/plugins/datasource/prometheus/result_transformer.ts index c9693eaf657..3c21e0c3d51 100644 --- a/public/app/plugins/datasource/prometheus/result_transformer.ts +++ b/public/app/plugins/datasource/prometheus/result_transformer.ts @@ -16,7 +16,7 @@ export class ResultTransformer { options.valueWithRefId ), ]; - } else if (options.format === 'heatmap') { + } else if (prometheusResult && options.format === 'heatmap') { let seriesList = []; prometheusResult.sort(sortSeriesByLabel); for (const metricData of prometheusResult) { @@ -24,7 +24,7 @@ export class ResultTransformer { } seriesList = this.transformToHistogramOverTime(seriesList); return seriesList; - } else { + } else if (prometheusResult) { const seriesList = []; for (const metricData of prometheusResult) { if (response.data.data.resultType === 'matrix') { @@ -82,7 +82,7 @@ export class ResultTransformer { let i, j; const metricLabels = {}; - if (md.length === 0) { + if (!md || md.length === 0) { return table; } diff --git a/public/app/plugins/datasource/prometheus/specs/result_transformer.test.ts b/public/app/plugins/datasource/prometheus/specs/result_transformer.test.ts index 0ccb79a5d1f..d7e42237f8a 100644 --- a/public/app/plugins/datasource/prometheus/specs/result_transformer.test.ts +++ b/public/app/plugins/datasource/prometheus/specs/result_transformer.test.ts @@ -10,6 +10,31 @@ describe('Prometheus Result Transformer', () => { ctx.resultTransformer = new ResultTransformer(ctx.templateSrv); }); + describe('When nothing is returned', () => { + test('should return empty series', () => { + const response = { + status: 'success', + data: { + resultType: '', + result: null, + }, + }; + const series = ctx.resultTransformer.transform({ data: response }, {}); + expect(series).toEqual([]); + }); + test('should return empty table', () => { + const response = { + status: 'success', + data: { + resultType: '', + result: null, + }, + }; + const table = ctx.resultTransformer.transform({ data: response }, { format: 'table' }); + expect(table).toMatchObject([{ type: 'table', rows: [] }]); + }); + }); + describe('When resultFormat is table', () => { const response = { status: 'success',