mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 13:16:03 +08:00

* Initial GCM schema work - Split types for convenience - Update conditionals where needed - Update type references * Add additional supporting types * Add some more accessory and legacy types * Add missing type * Rename backend folder * Add missing generated file * Review
70 lines
2.4 KiB
TypeScript
70 lines
2.4 KiB
TypeScript
import React from 'react';
|
|
// @ts-ignore
|
|
import renderer from 'react-test-renderer';
|
|
|
|
import { VariableModel } from '@grafana/data';
|
|
|
|
import CloudMonitoringDatasource from '../datasource';
|
|
import { MetricFindQueryTypes } from '../types/query';
|
|
import { CloudMonitoringVariableQuery } from '../types/types';
|
|
|
|
import { CloudMonitoringVariableQueryEditor, Props } from './VariableQueryEditor';
|
|
|
|
jest.mock('../functions', () => ({
|
|
getMetricTypes: () => ({ metricTypes: [], selectedMetricType: '' }),
|
|
extractServicesFromMetricDescriptors: () => [],
|
|
}));
|
|
|
|
jest.mock('@grafana/runtime', () => {
|
|
const original = jest.requireActual('@grafana/runtime');
|
|
return {
|
|
...original,
|
|
getTemplateSrv: () => ({
|
|
replace: (s: string) => s,
|
|
getVariables: () => [] as unknown as VariableModel[],
|
|
}),
|
|
};
|
|
});
|
|
|
|
const props: Props = {
|
|
onChange: (query) => {},
|
|
query: {} as unknown as CloudMonitoringVariableQuery,
|
|
datasource: {
|
|
getDefaultProject: () => '',
|
|
getProjects: async () => Promise.resolve([]),
|
|
getMetricTypes: async (projectName: string) => Promise.resolve([]),
|
|
getSLOServices: async (projectName: string) => Promise.resolve([]),
|
|
getServiceLevelObjectives: (projectName: string, serviceId: string) => Promise.resolve([]),
|
|
ensureGCEDefaultProject: async () => Promise.resolve(''),
|
|
} as unknown as CloudMonitoringDatasource,
|
|
onRunQuery: () => {},
|
|
};
|
|
|
|
describe('VariableQueryEditor', () => {
|
|
it('renders correctly', () => {
|
|
const tree = renderer.create(<CloudMonitoringVariableQueryEditor {...props} />).toJSON();
|
|
expect(tree).toMatchSnapshot();
|
|
});
|
|
|
|
describe('and a new variable is created', () => {
|
|
it('should trigger a query using the first query type in the array', (done) => {
|
|
props.onChange = (query) => {
|
|
expect(query.selectedQueryType).toBe('projects');
|
|
done();
|
|
};
|
|
renderer.create(<CloudMonitoringVariableQueryEditor {...props} />).toJSON();
|
|
});
|
|
});
|
|
|
|
describe('and an existing variable is edited', () => {
|
|
it('should trigger new query using the saved query type', (done) => {
|
|
props.query = { selectedQueryType: MetricFindQueryTypes.LabelKeys } as unknown as CloudMonitoringVariableQuery;
|
|
props.onChange = (query) => {
|
|
expect(query.selectedQueryType).toBe('labelKeys');
|
|
done();
|
|
};
|
|
renderer.create(<CloudMonitoringVariableQueryEditor {...props} />).toJSON();
|
|
});
|
|
});
|
|
});
|