Files
Andreas Christou d4f382892d CloudMonitor: Fix to hide queries when used in conjunction with Expressions (#53537)
* Correctly pass all original query parameters on interpolation

* Add datasource tests

- Update props on mock query
- Add mock instance settings
- Add util function to generate template variables
- Add datasource test file
- Correct setting of templateSrv
- Update betterer results

* Simplify test and pass templateSrv appropriately

* Fix lint issue

* Simplify test and add type that supports parital nested objects

* Update test and remove unneeded util function

* Rename to avoid duplicate mock
2022-08-12 11:02:56 +01:00

29 lines
1.4 KiB
TypeScript

import { TemplateSrv } from 'app/features/templating/template_srv';
import { createMockInstanceSetttings } from './__mocks__/cloudMonitoringInstanceSettings';
import { createMockQuery } from './__mocks__/cloudMonitoringQuery';
import Datasource from './datasource';
describe('Cloud Monitoring Datasource', () => {
describe('interpolateVariablesInQueries', () => {
it('should leave a query unchanged if there are no template variables', () => {
const mockInstanceSettings = createMockInstanceSetttings();
const ds = new Datasource(mockInstanceSettings);
const query = createMockQuery();
const templateVariablesApplied = ds.interpolateVariablesInQueries([query], {});
expect(templateVariablesApplied[0]).toEqual(query);
});
it('should correctly apply template variables', () => {
const templateSrv = new TemplateSrv();
templateSrv.replace = jest.fn().mockReturnValue('project-variable');
const mockInstanceSettings = createMockInstanceSetttings();
const ds = new Datasource(mockInstanceSettings, templateSrv);
const query = createMockQuery({ metricQuery: { projectName: '$testVar' } });
const templatedQuery = ds.interpolateVariablesInQueries([query], {});
expect(templatedQuery[0]).toHaveProperty('datasource');
expect(templatedQuery[0].metricQuery.projectName).toEqual('project-variable');
});
});
});