mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* wip: add slo support * Export DataSourcePlugin * wip: break out metric query editor into its own component * wip: refactor frontend - keep SLO and Metric query in differnt objects * wip - load services and slos * Fix broken test * Add interactive slo expression builder * Change order of dropdowns * Refactoring backend model. slo unit testing in progress * Unit test migration and SLOs * Cleanup SLO editor * Simplify alias by component * Support alias by for slos * Support slos in variable queries * Fix broken last query error * Update Help section to include SLO aliases * streamline datasource resource cache * Break out api specific stuff in datasource to its own file * Move get projects call to frontend * Refactor api caching * Unit test api service * Fix lint go issue * Fix typescript strict errors * Fix test datasource * Use budget fraction selector instead of budget * Reset SLO when service is changed * Handle error in case resource call returned no data * Show real SLI display name * Use unsafe prefix on will mount hook * Store goal in query model since it will be used as soon as graph panel supports adding a threshold * Add comment to describe why componentWillMount is used * Interpolate sloid * Break out SLO aggregation into its own func * Also test group bys for metricquery test * Remove not used type fields * Remove annoying stackdriver prefix from error message * Default view param to FULL * Add part about SLO query builder in docs * Use new images * Fixes after feedback * Add one more group by test * Make stackdriver types internal * Update docs/sources/features/datasources/stackdriver.md Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com> * Update docs/sources/features/datasources/stackdriver.md Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com> * Update docs/sources/features/datasources/stackdriver.md Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com> * Updates after PR feedback * add test for when no alias by defined * fix infinite loop when newVariables feature flag is on onChange being called in componentDidUpdate produces an infinite loop when using the new React template variable implementation. Also fixes a spelling mistake * implements feedback for documentation changes * more doc changes Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com> Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
import React from 'react';
|
|
// @ts-ignore
|
|
import renderer from 'react-test-renderer';
|
|
import { StackdriverVariableQueryEditor } from './VariableQueryEditor';
|
|
import { VariableQueryProps } from 'app/types/plugins';
|
|
import { MetricFindQueryTypes } from '../types';
|
|
import { VariableModel } from 'app/features/templating/types';
|
|
|
|
jest.mock('../functions', () => ({
|
|
getMetricTypes: (): any => ({ metricTypes: [], selectedMetricType: '' }),
|
|
extractServicesFromMetricDescriptors: (): any[] => [],
|
|
}));
|
|
|
|
const props: VariableQueryProps = {
|
|
onChange: (query, definition) => {},
|
|
query: {},
|
|
datasource: {
|
|
getDefaultProject: () => '',
|
|
getProjects: async () => Promise.resolve([]),
|
|
getMetricTypes: async (projectName: string) => Promise.resolve([]),
|
|
getSLOServices: async (projectName: string, serviceId: string) => Promise.resolve([]),
|
|
getServiceLevelObjectives: (projectName: string, serviceId: string) => Promise.resolve([]),
|
|
},
|
|
templateSrv: { replace: (s: string) => s, getVariables: () => ([] as unknown) as VariableModel[] },
|
|
};
|
|
|
|
describe('VariableQueryEditor', () => {
|
|
it('renders correctly', () => {
|
|
const tree = renderer.create(<StackdriverVariableQueryEditor {...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, definition) => {
|
|
expect(definition).toBe('Stackdriver - Projects');
|
|
done();
|
|
};
|
|
renderer.create(<StackdriverVariableQueryEditor {...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 };
|
|
props.onChange = (query, definition) => {
|
|
expect(definition).toBe('Stackdriver - Label Keys');
|
|
done();
|
|
};
|
|
renderer.create(<StackdriverVariableQueryEditor {...props} />).toJSON();
|
|
});
|
|
});
|
|
});
|