diff --git a/public/app/plugins/datasource/graphite/datasource.test.ts b/public/app/plugins/datasource/graphite/datasource.test.ts index 170f85bea0b..0cf02befa61 100644 --- a/public/app/plugins/datasource/graphite/datasource.test.ts +++ b/public/app/plugins/datasource/graphite/datasource.test.ts @@ -233,15 +233,14 @@ describe('graphiteDatasource', () => { }, ]; - beforeEach(() => { + beforeEach(async () => { fetchMock.mockImplementation((options: any) => { return of(createFetchResponse(response)); }); - ctx.ds.annotationQuery(options).then((data: any) => { + await ctx.ds.annotationQuery(options).then((data: any) => { results = data; }); - // ctx.$rootScope.$apply(); }); it('should parse the tags string into an array', () => { @@ -251,6 +250,16 @@ describe('graphiteDatasource', () => { expect(results[0].tags[1]).toEqual('tag2'); }); }); + + it('and tags response is invalid', async () => { + fetchMock.mockImplementation((options: any) => { + return of(createFetchResponse('zzzzzzz')); + }); + await ctx.ds.annotationQuery(options).then((data: any) => { + results = data; + }); + expect(results).toEqual([]); + }); }); describe('when fetching Graphite function descriptions', () => { diff --git a/public/app/plugins/datasource/graphite/datasource.ts b/public/app/plugins/datasource/graphite/datasource.ts index 24e71a37d97..a808ba1aae7 100644 --- a/public/app/plugins/datasource/graphite/datasource.ts +++ b/public/app/plugins/datasource/graphite/datasource.ts @@ -261,6 +261,10 @@ export class GraphiteDatasource extends DataSourceApi { const list = []; + if (!_.isArray(results.data)) { + console.error(`Unable to get annotations from ${results.url}.`); + return []; + } for (let i = 0; i < results.data.length; i++) { const e = results.data[i];