import { describe, beforeEach, it, expect, angularMocks } from 'test/lib/common'; import helpers from 'test/specs/helpers'; import OpenTsDatasource from '../datasource'; describe('opentsdb', function() { var ctx = new helpers.ServiceTestContext(); var instanceSettings = { url: '', jsonData: { tsdbVersion: 1 } }; beforeEach(angularMocks.module('grafana.core')); beforeEach(angularMocks.module('grafana.services')); beforeEach(ctx.providePhase(['backendSrv'])); beforeEach( angularMocks.inject(function($q, $rootScope, $httpBackend, $injector) { ctx.$q = $q; ctx.$httpBackend = $httpBackend; ctx.$rootScope = $rootScope; ctx.ds = $injector.instantiate(OpenTsDatasource, { instanceSettings: instanceSettings, }); $httpBackend.when('GET', /\.html$/).respond(''); }) ); describe('When performing metricFindQuery', function() { var results; var requestOptions; beforeEach(function() { ctx.backendSrv.datasourceRequest = function(options) { requestOptions = options; return ctx.$q.when({ data: [{ target: 'prod1.count', datapoints: [[10, 1], [12, 1]] }], }); }; }); it('metrics() should generate api suggest query', function() { ctx.ds.metricFindQuery('metrics(pew)').then(function(data) { results = data; }); ctx.$rootScope.$apply(); expect(requestOptions.url).to.be('/api/suggest'); expect(requestOptions.params.type).to.be('metrics'); expect(requestOptions.params.q).to.be('pew'); expect(results).not.to.be(null); }); it('tag_names(cpu) should generate lookup query', function() { ctx.ds.metricFindQuery('tag_names(cpu)').then(function(data) { results = data; }); ctx.$rootScope.$apply(); expect(requestOptions.url).to.be('/api/search/lookup'); expect(requestOptions.params.m).to.be('cpu'); }); it('tag_values(cpu, test) should generate lookup query', function() { ctx.ds.metricFindQuery('tag_values(cpu, hostname)').then(function(data) { results = data; }); ctx.$rootScope.$apply(); expect(requestOptions.url).to.be('/api/search/lookup'); expect(requestOptions.params.m).to.be('cpu{hostname=*}'); }); it('tag_values(cpu, test) should generate lookup query', function() { ctx.ds.metricFindQuery('tag_values(cpu, hostname, env=$env)').then(function(data) { results = data; }); ctx.$rootScope.$apply(); expect(requestOptions.url).to.be('/api/search/lookup'); expect(requestOptions.params.m).to.be('cpu{hostname=*,env=$env}'); }); it('tag_values(cpu, test) should generate lookup query', function() { ctx.ds.metricFindQuery('tag_values(cpu, hostname, env=$env, region=$region)').then(function(data) { results = data; }); ctx.$rootScope.$apply(); expect(requestOptions.url).to.be('/api/search/lookup'); expect(requestOptions.params.m).to.be('cpu{hostname=*,env=$env,region=$region}'); }); it('suggest_tagk() should generate api suggest query', function() { ctx.ds.metricFindQuery('suggest_tagk(foo)').then(function(data) { results = data; }); ctx.$rootScope.$apply(); expect(requestOptions.url).to.be('/api/suggest'); expect(requestOptions.params.type).to.be('tagk'); expect(requestOptions.params.q).to.be('foo'); }); it('suggest_tagv() should generate api suggest query', function() { ctx.ds.metricFindQuery('suggest_tagv(bar)').then(function(data) { results = data; }); ctx.$rootScope.$apply(); expect(requestOptions.url).to.be('/api/suggest'); expect(requestOptions.params.type).to.be('tagv'); expect(requestOptions.params.q).to.be('bar'); }); }); });