grafana/public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryBuilderContainer.test.tsx
Andrej Ocenas 642f0a250d
Prometheus: Use single string expr as a state for the visual editor (#45232)
* Use just expr string as a state for whole editor

* Fix patterns

* Fix tests
2022-02-10 16:55:44 +01:00

43 lines
1.4 KiB
TypeScript

import React from 'react';
import { render, screen } from '@testing-library/react';
import { PromQueryBuilderContainer } from './PromQueryBuilderContainer';
import { PrometheusDatasource } from '../../datasource';
import { EmptyLanguageProviderMock } from '../../language_provider.mock';
import PromQlLanguageProvider from '../../language_provider';
import { addOperation } from '../shared/OperationList.testUtils';
describe('PromQueryBuilderContainer', () => {
it('translates query between string and model', async () => {
const props = {
query: {
expr: 'metric_test{job="testjob"}',
refId: 'A',
},
datasource: new PrometheusDatasource(
{
id: 1,
uid: '',
type: 'prometheus',
name: 'prom-test',
access: 'proxy',
url: '',
jsonData: {},
meta: {} as any,
},
undefined,
undefined,
new EmptyLanguageProviderMock() as unknown as PromQlLanguageProvider
),
onChange: jest.fn(),
onRunQuery: () => {},
};
render(<PromQueryBuilderContainer {...props} />);
expect(screen.getByText('metric_test')).toBeInTheDocument();
addOperation('Range functions', 'Rate');
expect(props.onChange).toBeCalledWith({
expr: 'rate(metric_test{job="testjob"}[$__rate_interval])',
refId: 'A',
});
});
});