import { act, render, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { setupMockedDataSource } from '../__mocks__/CloudWatchDataSource';
import { CloudWatchLogsQuery, CloudWatchMetricsQuery, MetricEditorMode, MetricQueryType } from '../types';
import QueryHeader from './QueryHeader';
const ds = setupMockedDataSource({
variables: [],
});
ds.datasource.getRegions = jest.fn().mockResolvedValue([]);
describe('QueryHeader', () => {
it('should display metric options for metrics', async () => {
const query: CloudWatchMetricsQuery = {
queryMode: 'Metrics',
id: '',
region: 'us-east-2',
namespace: '',
period: '',
alias: '',
metricName: '',
dimensions: {},
matchExact: true,
statistic: '',
expression: '',
refId: '',
};
const onChange = jest.fn();
const onRunQuery = jest.fn();
query.metricEditorMode = MetricEditorMode.Code;
query.metricQueryType = MetricQueryType.Query;
render(
);
const builderElement = screen.getByLabelText('Builder');
expect(builderElement).toBeInTheDocument();
await act(async () => {
await builderElement.click();
});
const modalTitleElem = screen.getByText('Are you sure?');
expect(modalTitleElem).toBeInTheDocument();
expect(onChange).not.toHaveBeenCalled();
});
it('should not display metric options for logs', async () => {
const onChange = jest.fn();
const onRunQuery = jest.fn();
const query: CloudWatchLogsQuery = {
queryType: 'Metrics',
id: '',
region: 'us-east-2',
expression: '',
refId: '',
queryMode: 'Logs',
};
render(
);
await waitFor(() => {
expect(screen.queryByLabelText('Builder')).toBeNull();
expect(screen.queryByLabelText('Code')).toBeNull();
});
});
});