You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.1 KiB
73 lines
2.1 KiB
import React from 'react';
|
|
import { dateTime, CoreApp } from '@grafana/data';
|
|
import { screen, render } from '@testing-library/react';
|
|
|
|
import { PromQueryEditor, testIds } from './PromQueryEditor';
|
|
import { PrometheusDatasource } from '../datasource';
|
|
import { PromQuery } from '../types';
|
|
|
|
jest.mock('app/features/dashboard/services/TimeSrv', () => {
|
|
return {
|
|
getTimeSrv: () => ({
|
|
timeRange: () => ({
|
|
from: dateTime(),
|
|
to: dateTime(),
|
|
}),
|
|
}),
|
|
};
|
|
});
|
|
|
|
jest.mock('./monaco-query-field/MonacoQueryFieldWrapper', () => {
|
|
const fakeQueryField = () => <div>prometheus query field</div>;
|
|
return {
|
|
MonacoQueryFieldWrapper: fakeQueryField,
|
|
};
|
|
});
|
|
|
|
const setup = (propOverrides?: object) => {
|
|
const datasourceMock: unknown = {
|
|
createQuery: jest.fn((q) => q),
|
|
getPrometheusTime: jest.fn((date, roundup) => 123),
|
|
languageProvider: {
|
|
start: () => Promise.resolve([]),
|
|
syntax: () => {},
|
|
getLabelKeys: () => [],
|
|
metrics: [],
|
|
},
|
|
getInitHints: () => [],
|
|
};
|
|
const datasource: PrometheusDatasource = datasourceMock as PrometheusDatasource;
|
|
const onRunQuery = jest.fn();
|
|
const onChange = jest.fn();
|
|
const query: PromQuery = { expr: '', refId: 'A' };
|
|
|
|
const props: any = {
|
|
datasource,
|
|
onChange,
|
|
onRunQuery,
|
|
query,
|
|
};
|
|
|
|
Object.assign(props, propOverrides);
|
|
|
|
return render(<PromQueryEditor {...props} />);
|
|
};
|
|
|
|
describe('Render PromQueryEditor with basic options', () => {
|
|
it('should render editor', () => {
|
|
setup();
|
|
expect(screen.getByTestId(testIds.editor)).toBeInTheDocument();
|
|
});
|
|
|
|
it('should render exemplar editor for dashboard', () => {
|
|
setup({ app: CoreApp.Dashboard });
|
|
expect(screen.getByTestId(testIds.editor)).toBeInTheDocument();
|
|
expect(screen.getByTestId(testIds.exemplar)).toBeInTheDocument();
|
|
});
|
|
|
|
it('should not render exemplar editor for unified alerting', () => {
|
|
setup({ app: CoreApp.UnifiedAlerting });
|
|
expect(screen.getByTestId(testIds.editor)).toBeInTheDocument();
|
|
expect(screen.queryByTestId(testIds.exemplar)).not.toBeInTheDocument();
|
|
});
|
|
});
|
|
|