grafana/public/app/features/explore/spec/query.test.tsx
Piotr Jamróz 975edf14dc
Explore: Unify spec setup (#73994)
* Simplify Explore spec setup

* Update public/app/features/explore/spec/helper/setup.tsx

Co-authored-by: Giordano Ricci <me@giordanoricci.com>

---------

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2023-09-05 13:05:11 +02:00

53 lines
1.8 KiB
TypeScript

import { screen } from '@testing-library/react';
import { EventBusSrv, serializeStateToUrlParam } from '@grafana/data';
import { makeLogsQueryResponse } from './helper/query';
import { setupExplore, tearDown, waitForExplore } from './helper/setup';
const testEventBus = new EventBusSrv();
jest.mock('@grafana/runtime', () => ({
...jest.requireActual('@grafana/runtime'),
getAppEvents: () => testEventBus,
}));
describe('Explore: handle running/not running query', () => {
afterEach(() => {
tearDown();
});
it('inits and renders editor but does not call query on empty initial state', async () => {
const { datasources } = setupExplore();
await waitForExplore();
expect(datasources.loki.query).not.toBeCalled();
});
it('runs query when initial state contains query and renders results', async () => {
const urlParams = {
left: serializeStateToUrlParam({
datasource: 'loki-uid',
queries: [{ refId: 'A', expr: '{ label="value"}', datasource: { type: 'logs', uid: 'loki-uid' } }],
range: { from: 'now-1h', to: 'now' },
}),
};
const { datasources } = setupExplore({ urlParams });
jest.mocked(datasources.loki.query).mockReturnValueOnce(makeLogsQueryResponse());
// Make sure we render the logs panel
await screen.findByText(/^Logs$/);
// Make sure we render the log line
await screen.findByText(/custom log line/i);
// And that the editor gets the expr from the url
await screen.findByText(`loki Editor input: { label="value"}`);
// We called the data source query method once
expect(datasources.loki.query).toBeCalledTimes(1);
expect(jest.mocked(datasources.loki.query).mock.calls[0][0]).toMatchObject({
targets: [{ expr: '{ label="value"}' }],
});
});
});