import { render, screen, fireEvent, waitFor } from '@testing-library/react'; import _, { DebouncedFunc } from 'lodash'; // eslint-disable-line lodash/import-scope import React from 'react'; import { act } from 'react-dom/test-utils'; import { ExploreId } from '../../../../types'; import { setupMockedDataSource } from '../__mocks__/CloudWatchDataSource'; import CloudWatchLogsQueryField from './LogsQueryField'; jest .spyOn(_, 'debounce') .mockImplementation((func: (...args: any) => any, wait?: number) => func as DebouncedFunc); describe('CloudWatchLogsQueryField', () => { it('runs onRunQuery on blur of Log Groups', async () => { const onRunQuery = jest.fn(); const ds = setupMockedDataSource(); render( {}} /> ); const multiSelect = screen.getByLabelText('Log Groups'); await act(async () => { fireEvent.blur(multiSelect); }); expect(onRunQuery).toHaveBeenCalled(); }); it('loads defaultLogGroups', async () => { const onRunQuery = jest.fn(); const ds = setupMockedDataSource(); ds.datasource.logsQueryRunner.defaultLogGroups = ['foo']; render( {}} /> ); await waitFor(() => { expect(screen.getByText('foo')).toBeInTheDocument(); }); }); });