/usr/share/grafana/public/app/plugins/datasource/azuremonitor
import Datasource from './datasource'; import { createMockInstanceSetttings } from './mocks/instanceSettings'; import createMockQuery from './mocks/query'; import { singleVariable } from './mocks/variables'; import { AzureQueryType } from './types/query'; jest.mock('@grafana/runtime', () => { return { __esModule: true, ...jest.requireActual('@grafana/runtime'), getTemplateSrv: () => ({ replace: (target?: string) => { if (target === '$resourceGroup') { return 'the-resource-group'; } return target || ''; }, getVariables: jest.fn(), updateTimeRange: jest.fn(), containsTemplate: (target?: string) => { return (target || '').includes('$'); }, }), }; }); describe('Azure Monitor Datasource', () => { describe('interpolateVariablesInQueries()', () => { it('should interpolate variables in the queries', () => { const ds = new Datasource(createMockInstanceSetttings()); const queries = [createMockQuery({ azureMonitor: { resources: [{ resourceGroup: '$resourceGroup' }] } })]; const interpolatedQueries = ds.interpolateVariablesInQueries(queries, { resourceGroup: { text: 'the-resource-group', value: 'the-resource-group' }, }); expect(interpolatedQueries).toContainEqual( expect.objectContaining({ azureMonitor: expect.objectContaining({ resources: [expect.objectContaining({ resourceGroup: 'the-resource-group' })], }), }) ); }); it('should include a datasource ref when interpolating queries', () => { const ds = new Datasource(createMockInstanceSetttings()); const query = createMockQuery(); delete query.datasource; const queries = [query]; const interpolatedQueries = ds.interpolateVariablesInQueries(queries, {}); expect(interpolatedQueries).toContainEqual( expect.objectContaining({ datasource: expect.objectContaining({ type: 'azuremonitor', uid: 'abc' }), }) ); }); }); it('should not filter a valid query', () => { const ds = new Datasource(createMockInstanceSetttings()); const query = createMockQuery(); expect(ds.filterQuery(query)).toBe(true); }); it('should filter out a query with no query type', () => { const ds = new Datasource(createMockInstanceSetttings()); const query = createMockQuery(); delete query.queryType; expect(ds.filterQuery(query)).toBe(false); }); describe('When performing targetContainsTemplate', () => { it('should return false when no variable is being used', () => { const query = { ...createMockQuery(), queryType: AzureQueryType.AzureResourceGraph, }; const ds = new Datasource(createMockInstanceSetttings()); expect(ds.targetContainsTemplate(query)).toEqual(false); }); it('should return true when resource field is using a variable', () => { const query = { ...createMockQuery(), queryType: AzureQueryType.AzureResourceGraph, azureResourceGraph: { query: '$temp-var' }, }; const ds = new Datasource(createMockInstanceSetttings()); expect(ds.targetContainsTemplate(query)).toEqual(true); }); it('should return true when resource field is using a variable in the subscriptions field', () => { const query = { ...createMockQuery(), queryType: AzureQueryType.AzureResourceGraph, subscriptions: ['$temp-var'], }; const ds = new Datasource(createMockInstanceSetttings()); expect(ds.targetContainsTemplate(query)).toEqual(true); }); it('should return false when a variable is used in a different part of the query', () => { const query = { ...createMockQuery(), queryType: AzureQueryType.AzureResourceGraph, azureMonitor: { metricName: `$${singleVariable.name}` }, }; const ds = new Datasource(createMockInstanceSetttings()); expect(ds.targetContainsTemplate(query)).toEqual(false); }); }); });
.
Edit
..
Edit
CHANGELOG.md
Edit
README.md
Edit
azureMetadata
Edit
azure_log_analytics
Edit
azure_monitor
Edit
azure_resource_graph
Edit
components
Edit
credentials.ts
Edit
dashboards
Edit
dataquery.cue
Edit
dataquery.gen.ts
Edit
datasource.test.ts
Edit
datasource.ts
Edit
dist
Edit
e2e
Edit
grafanaTemplateVariableFns.ts
Edit
grafanaTemplateVariables.test.ts
Edit
i18next.config.ts
Edit
img
Edit
jest-setup.js
Edit
jest.config.js
Edit
locales
Edit
mocks
Edit
module.test.ts
Edit
module.ts
Edit
package.json
Edit
plugin.json
Edit
project.json
Edit
query_help.md
Edit
resourcePicker
Edit
time_grain_converter.test.ts
Edit
time_grain_converter.ts
Edit
tracking.ts
Edit
tsconfig.json
Edit
types
Edit
utils
Edit
variables.test.ts
Edit
variables.ts
Edit
webpack.config.ts
Edit