Files
Andrew Hackmann 3ea6d1f7cc AzureMonitor: Remove dependencies on Grafana frontend (#75595)
* remove local graf templateSrv and use @grafana/runtime

* tests broken still 0.0

* wip

* moving around tests and fixing

* template var test using mocking and stuff

* AM ds tests fixed

* fix filter tests

* all tests work

* remove comment

* Update azure_log_analytics_datasource.ts

* remove deferred util - not used

* mock instead of spying

* not calling getTemplateSrv each time

* pass range down to filter instead of doing werid stuff

* use default time range if no time range

* prettierer

* remove note
2023-10-04 09:25:05 -05:00

116 lines
4.0 KiB
TypeScript

import { createMockInstanceSetttings } from './__mocks__/instanceSettings';
import createMockQuery from './__mocks__/query';
import { singleVariable } from './__mocks__/variables';
import Datasource from './datasource';
import { AzureQueryType } from './types';
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);
});
});
});