/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import { configure, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import React from 'react';
import { CustomPanelView } from '../custom_panel_view';
import { waitFor } from '@testing-library/react';
import {
panelBreadCrumbs,
sampleEmptyPanel,
samplePanel,
samplePPLResponse,
sampleSavedVisualization,
} from '../../../../test/panels_constants';
import httpClientMock from '../../../../test/__mocks__/httpClientMock';
import PPLService from '../../../../public/services/requests/ppl';
import DSLService from '../../../../public/services/requests/dsl';
import { coreStartMock } from '../../../../test/__mocks__/coreMocks';
import { HttpResponse } from '../../../../../../src/core/public';
import { applyMiddleware, createStore } from 'redux';
import { rootReducer } from '../../../framework/redux/reducers';
import thunk from 'redux-thunk';
import { Provider } from 'react-redux';
describe('Panels View Component', () => {
configure({ adapter: new Adapter() });
const store = createStore(rootReducer, applyMiddleware(thunk));
it('renders panel view container without visualizations', async () => {
httpClientMock.get = jest.fn(() =>
Promise.resolve((sampleEmptyPanel as unknown) as HttpResponse)
);
const panelId = 'L8Sx53wBDp0rvEg3yoLb';
const http = httpClientMock;
const pplService = new PPLService(httpClientMock);
const dslService = new DSLService(httpClientMock);
const core = coreStartMock;
const parentBreadcrumbs = panelBreadCrumbs;
const start = 'now-30m';
const end = 'now';
const setStart = jest.fn();
const setEnd = jest.fn();
const renameCustomPanel = jest.fn();
const cloneCustomPanel = jest.fn();
const deleteCustomPanel = jest.fn();
const setToast = jest.fn();
const onEditClick = (savedVisId: string) => {
window.location.assign(`#/event_analytics/explorer/${savedVisId}`);
};
const wrapper = mount(
);
wrapper.update();
await waitFor(() => {
expect(wrapper).toMatchSnapshot();
});
});
it('renders panel view container with visualizations', async () => {
let counter = 0;
// Mocks two http get requests first for fetch panel
// Others for fetching visualizations in panel
httpClientMock.get = jest.fn(() => {
if (counter === 0) {
counter += 1;
return Promise.resolve((samplePanel as unknown) as HttpResponse);
} else return Promise.resolve((sampleSavedVisualization as unknown) as HttpResponse);
});
httpClientMock.post = jest.fn(() =>
Promise.resolve((samplePPLResponse as unknown) as HttpResponse)
);
const panelId = 'L8Sx53wBDp0rvEg3yoLb';
const http = httpClientMock;
const pplService = new PPLService(httpClientMock);
const dslService = new DSLService(httpClientMock);
const core = coreStartMock;
const parentBreadcrumbs = panelBreadCrumbs;
const start = 'now-30m';
const end = 'now';
const setStart = jest.fn();
const setEnd = jest.fn();
const renameCustomPanel = jest.fn();
const cloneCustomPanel = jest.fn();
const deleteCustomPanel = jest.fn();
const setToast = jest.fn();
const onEditClick = (savedVisId: string) => {
window.location.assign(`#/event_analytics/explorer/${savedVisId}`);
};
const wrapper = mount(
);
wrapper.update();
await waitFor(() => {
expect(wrapper).toMatchSnapshot();
});
});
});