diff --git a/public/app/plugins/datasource/opentsdb/specs/datasource-specs.ts b/public/app/plugins/datasource/opentsdb/specs/datasource-specs.ts deleted file mode 100644 index a4c90af3d50..00000000000 --- a/public/app/plugins/datasource/opentsdb/specs/datasource-specs.ts +++ /dev/null @@ -1,105 +0,0 @@ -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'); - }); - }); -}); diff --git a/public/app/plugins/datasource/opentsdb/specs/datasource.jest.ts b/public/app/plugins/datasource/opentsdb/specs/datasource.jest.ts new file mode 100644 index 00000000000..73eca7cffde --- /dev/null +++ b/public/app/plugins/datasource/opentsdb/specs/datasource.jest.ts @@ -0,0 +1,91 @@ +import OpenTsDatasource from '../datasource'; +import $q from 'q'; + +describe('opentsdb', () => { + let ctx = { + backendSrv: {}, + ds: {}, + templateSrv: { + replace: str => str, + }, + }; + let instanceSettings = { url: '', jsonData: { tsdbVersion: 1 } }; + + beforeEach(() => { + ctx.ctrl = new OpenTsDatasource(instanceSettings, $q, ctx.backendSrv, ctx.templateSrv); + }); + + describe('When performing metricFindQuery', () => { + var results; + var requestOptions; + + beforeEach(async () => { + ctx.backendSrv.datasourceRequest = await function(options) { + requestOptions = options; + return Promise.resolve({ + data: [{ target: 'prod1.count', datapoints: [[10, 1], [12, 1]] }], + }); + }; + }); + + it('metrics() should generate api suggest query', () => { + ctx.ctrl.metricFindQuery('metrics(pew)').then(function(data) { + results = data; + }); + expect(requestOptions.url).toBe('/api/suggest'); + expect(requestOptions.params.type).toBe('metrics'); + expect(requestOptions.params.q).toBe('pew'); + expect(results).not.toBe(null); + }); + + it('tag_names(cpu) should generate lookup query', () => { + ctx.ctrl.metricFindQuery('tag_names(cpu)').then(function(data) { + results = data; + }); + expect(requestOptions.url).toBe('/api/search/lookup'); + expect(requestOptions.params.m).toBe('cpu'); + }); + + it('tag_values(cpu, test) should generate lookup query', () => { + ctx.ctrl.metricFindQuery('tag_values(cpu, hostname)').then(function(data) { + results = data; + }); + expect(requestOptions.url).toBe('/api/search/lookup'); + expect(requestOptions.params.m).toBe('cpu{hostname=*}'); + }); + + it('tag_values(cpu, test) should generate lookup query', () => { + ctx.ctrl.metricFindQuery('tag_values(cpu, hostname, env=$env)').then(function(data) { + results = data; + }); + expect(requestOptions.url).toBe('/api/search/lookup'); + expect(requestOptions.params.m).toBe('cpu{hostname=*,env=$env}'); + }); + + it('tag_values(cpu, test) should generate lookup query', () => { + ctx.ctrl.metricFindQuery('tag_values(cpu, hostname, env=$env, region=$region)').then(function(data) { + results = data; + }); + expect(requestOptions.url).toBe('/api/search/lookup'); + expect(requestOptions.params.m).toBe('cpu{hostname=*,env=$env,region=$region}'); + }); + + it('suggest_tagk() should generate api suggest query', () => { + ctx.ctrl.metricFindQuery('suggest_tagk(foo)').then(function(data) { + results = data; + }); + expect(requestOptions.url).toBe('/api/suggest'); + expect(requestOptions.params.type).toBe('tagk'); + expect(requestOptions.params.q).toBe('foo'); + }); + + it('suggest_tagv() should generate api suggest query', () => { + ctx.ctrl.metricFindQuery('suggest_tagv(bar)').then(function(data) { + results = data; + }); + expect(requestOptions.url).toBe('/api/suggest'); + expect(requestOptions.params.type).toBe('tagv'); + expect(requestOptions.params.q).toBe('bar'); + }); + }); +}); diff --git a/public/app/plugins/datasource/opentsdb/specs/query-ctrl-specs.ts b/public/app/plugins/datasource/opentsdb/specs/query-ctrl-specs.ts deleted file mode 100644 index 97fc11e9d2f..00000000000 --- a/public/app/plugins/datasource/opentsdb/specs/query-ctrl-specs.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { describe, beforeEach, it, sinon, expect, angularMocks } from 'test/lib/common'; -import helpers from 'test/specs/helpers'; -import { OpenTsQueryCtrl } from '../query_ctrl'; - -describe('OpenTsQueryCtrl', function() { - var ctx = new helpers.ControllerTestContext(); - - beforeEach(angularMocks.module('grafana.core')); - beforeEach(angularMocks.module('grafana.services')); - beforeEach( - angularMocks.module(function($compileProvider) { - $compileProvider.preAssignBindingsEnabled(true); - }) - ); - - beforeEach(ctx.providePhase(['backendSrv', 'templateSrv'])); - - beforeEach(ctx.providePhase()); - beforeEach( - angularMocks.inject(($rootScope, $controller, $q) => { - ctx.$q = $q; - ctx.scope = $rootScope.$new(); - ctx.target = { target: '' }; - ctx.panelCtrl = { - panel: { - targets: [ctx.target], - }, - }; - ctx.panelCtrl.refresh = sinon.spy(); - ctx.datasource.getAggregators = sinon.stub().returns(ctx.$q.when([])); - ctx.datasource.getFilterTypes = sinon.stub().returns(ctx.$q.when([])); - - ctx.ctrl = $controller( - OpenTsQueryCtrl, - { $scope: ctx.scope }, - { - panelCtrl: ctx.panelCtrl, - datasource: ctx.datasource, - target: ctx.target, - } - ); - ctx.scope.$digest(); - }) - ); - - describe('init query_ctrl variables', function() { - it('filter types should be initialized', function() { - expect(ctx.ctrl.filterTypes.length).to.be(7); - }); - - it('aggregators should be initialized', function() { - expect(ctx.ctrl.aggregators.length).to.be(8); - }); - - it('fill policy options should be initialized', function() { - expect(ctx.ctrl.fillPolicies.length).to.be(4); - }); - }); - - describe('when adding filters and tags', function() { - it('addTagMode should be false when closed', function() { - ctx.ctrl.addTagMode = true; - ctx.ctrl.closeAddTagMode(); - expect(ctx.ctrl.addTagMode).to.be(false); - }); - - it('addFilterMode should be false when closed', function() { - ctx.ctrl.addFilterMode = true; - ctx.ctrl.closeAddFilterMode(); - expect(ctx.ctrl.addFilterMode).to.be(false); - }); - - it('removing a tag from the tags list', function() { - ctx.ctrl.target.tags = { tagk: 'tag_key', tagk2: 'tag_value2' }; - ctx.ctrl.removeTag('tagk'); - expect(Object.keys(ctx.ctrl.target.tags).length).to.be(1); - }); - - it('removing a filter from the filters list', function() { - ctx.ctrl.target.filters = [ - { - tagk: 'tag_key', - filter: 'tag_value2', - type: 'wildcard', - groupBy: true, - }, - ]; - ctx.ctrl.removeFilter(0); - expect(ctx.ctrl.target.filters.length).to.be(0); - }); - - it('adding a filter when tags exist should generate error', function() { - ctx.ctrl.target.tags = { tagk: 'tag_key', tagk2: 'tag_value2' }; - ctx.ctrl.addFilter(); - expect(ctx.ctrl.errors.filters).to.be( - 'Please remove tags to use filters, tags and filters are mutually exclusive.' - ); - }); - - it('adding a tag when filters exist should generate error', function() { - ctx.ctrl.target.filters = [ - { - tagk: 'tag_key', - filter: 'tag_value2', - type: 'wildcard', - groupBy: true, - }, - ]; - ctx.ctrl.addTag(); - expect(ctx.ctrl.errors.tags).to.be('Please remove filters to use tags, tags and filters are mutually exclusive.'); - }); - }); -}); diff --git a/public/app/plugins/datasource/opentsdb/specs/query_ctrl.jest.ts b/public/app/plugins/datasource/opentsdb/specs/query_ctrl.jest.ts new file mode 100644 index 00000000000..58a10b21207 --- /dev/null +++ b/public/app/plugins/datasource/opentsdb/specs/query_ctrl.jest.ts @@ -0,0 +1,93 @@ +import { OpenTsQueryCtrl } from '../query_ctrl'; + +describe('OpenTsQueryCtrl', () => { + var ctx = { + target: { target: '' }, + datasource: { + tsdbVersion: '', + getAggregators: () => Promise.resolve([]), + getFilterTypes: () => Promise.resolve([]), + }, + }; + + ctx.panelCtrl = { + panel: { + targets: [ctx.target], + }, + refresh: () => {}, + }; + + OpenTsQueryCtrl.prototype = Object.assign(OpenTsQueryCtrl.prototype, ctx); + + beforeEach(() => { + ctx.ctrl = new OpenTsQueryCtrl({}, {}); + }); + + describe('init query_ctrl variables', () => { + it('filter types should be initialized', () => { + expect(ctx.ctrl.filterTypes.length).toBe(7); + }); + + it('aggregators should be initialized', () => { + expect(ctx.ctrl.aggregators.length).toBe(8); + }); + + it('fill policy options should be initialized', () => { + expect(ctx.ctrl.fillPolicies.length).toBe(4); + }); + }); + + describe('when adding filters and tags', () => { + it('addTagMode should be false when closed', () => { + ctx.ctrl.addTagMode = true; + ctx.ctrl.closeAddTagMode(); + expect(ctx.ctrl.addTagMode).toBe(false); + }); + + it('addFilterMode should be false when closed', () => { + ctx.ctrl.addFilterMode = true; + ctx.ctrl.closeAddFilterMode(); + expect(ctx.ctrl.addFilterMode).toBe(false); + }); + + it('removing a tag from the tags list', () => { + ctx.ctrl.target.tags = { tagk: 'tag_key', tagk2: 'tag_value2' }; + ctx.ctrl.removeTag('tagk'); + expect(Object.keys(ctx.ctrl.target.tags).length).toBe(1); + }); + + it('removing a filter from the filters list', () => { + ctx.ctrl.target.filters = [ + { + tagk: 'tag_key', + filter: 'tag_value2', + type: 'wildcard', + groupBy: true, + }, + ]; + ctx.ctrl.removeFilter(0); + expect(ctx.ctrl.target.filters.length).toBe(0); + }); + + it('adding a filter when tags exist should generate error', () => { + ctx.ctrl.target.tags = { tagk: 'tag_key', tagk2: 'tag_value2' }; + ctx.ctrl.addFilter(); + expect(ctx.ctrl.errors.filters).toBe( + 'Please remove tags to use filters, tags and filters are mutually exclusive.' + ); + }); + + it('adding a tag when filters exist should generate error', () => { + ctx.ctrl.target.filters = [ + { + tagk: 'tag_key', + filter: 'tag_value2', + type: 'wildcard', + groupBy: true, + }, + ]; + ctx.ctrl.addTag(); + expect(ctx.ctrl.errors.tags).toBe('Please remove filters to use tags, tags and filters are mutually exclusive.'); + }); + }); +});