12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import { fireEvent, render, screen } from '@testing-library/react';
- import React from 'react';
- import { Provider } from 'react-redux';
- import { setDataSourceSrv } from '@grafana/runtime';
- import { configureStore } from 'app/store/configureStore';
- import { ExploreId, ExploreState } from 'app/types';
- import { DataQuery } from '../../../../packages/grafana-data/src';
- import { UserState } from '../profile/state/reducers';
- import { QueryRows } from './QueryRows';
- import { makeExplorePaneState } from './state/utils';
- function setup(queries: DataQuery[]) {
- const defaultDs = {
- name: 'newDs',
- uid: 'newDs-uid',
- meta: { id: 'newDs' },
- };
- const datasources: Record<string, any> = {
- 'newDs-uid': defaultDs,
- 'someDs-uid': {
- name: 'someDs',
- uid: 'someDs-uid',
- meta: { id: 'someDs' },
- components: {
- QueryEditor: () => 'someDs query editor',
- },
- },
- };
- setDataSourceSrv({
- getList() {
- return Object.values(datasources).map((d) => ({ name: d.name }));
- },
- getInstanceSettings(uid: string) {
- return datasources[uid] || defaultDs;
- },
- get(uid?: string) {
- return Promise.resolve(uid ? datasources[uid] || defaultDs : defaultDs);
- },
- } as any);
- const leftState = makeExplorePaneState();
- const initialState: ExploreState = {
- left: {
- ...leftState,
- richHistory: [],
- datasourceInstance: datasources['someDs-uid'],
- queries,
- },
- syncedTimes: false,
- right: undefined,
- richHistoryStorageFull: false,
- richHistoryLimitExceededWarningShown: false,
- richHistoryMigrationFailed: false,
- };
- const store = configureStore({ explore: initialState, user: { orgId: 1 } as UserState });
- return {
- store,
- datasources,
- };
- }
- describe('Explore QueryRows', () => {
- it('Should duplicate a query and generate a valid refId', async () => {
- const { store } = setup([{ refId: 'A' }]);
- render(
- <Provider store={store}>
- <QueryRows exploreId={ExploreId.left} />
- </Provider>
- );
- // waiting for the d&d component to fully render.
- await screen.findAllByText('someDs query editor');
- let duplicateButton = screen.getByTitle('Duplicate query');
- fireEvent.click(duplicateButton);
- // We should have another row with refId B
- expect(await screen.findByLabelText('Query editor row title B')).toBeInTheDocument();
- });
- });
|