/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import { applyMiddleware, createStore } from '@reduxjs/toolkit';
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import { configure, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import React from 'react';
import { Provider } from 'react-redux';
import thunk from 'redux-thunk';
import { CustomPanelListType } from '../../../../common/types/custom_panels';
import { panelBreadCrumbs, panelsData } from '../../../../test/panels_constants';
import { coreRefs } from '../../../framework/core_refs';
import { rootReducer } from '../../../framework/redux/reducers';
import { CustomPanelTable } from '../custom_panel_table';
jest.mock('react-router-dom', () => ({
useLocation: jest.fn().mockReturnValue({
pathname: '/operational_panels',
search: '',
hash: '',
state: null,
key: '',
}),
useHistory: jest.fn(),
}));
describe('Panels Table Component', () => {
configure({ adapter: new Adapter() });
const store = createStore(rootReducer, applyMiddleware(thunk));
coreRefs.savedObjectsClient.find = jest.fn(() =>
Promise.resolve({
savedObjects: [],
then: () => Promise.resolve(),
})
);
it('renders empty panel table container', async () => {
const loading = false;
const fetchCustomPanels = jest.fn();
const customPanelData: CustomPanelListType[] = [];
const createCustomPanel = jest.fn();
const setBreadcrumbs = jest.fn();
const parentBreadcrumb = panelBreadCrumbs;
const renameCustomPanel = jest.fn();
const cloneCustomPanel = jest.fn();
const deleteCustomPanelList = jest.fn();
const addSamplePanels = jest.fn();
const wrapper = mount(
);
wrapper.update();
await waitFor(() => {
expect(wrapper).toMatchSnapshot();
});
});
it('renders panel table container', async () => {
const loading = false;
const fetchCustomPanels = jest.fn();
const customPanelData: CustomPanelListType[] = panelsData.panels;
const createCustomPanel = jest.fn();
const setBreadcrumbs = jest.fn();
const parentBreadcrumb = panelBreadCrumbs;
const renameCustomPanel = jest.fn();
const cloneCustomPanel = jest.fn();
const deleteCustomPanelList = jest.fn();
const addSamplePanels = jest.fn();
const wrapper = mount(
);
wrapper.update();
await waitFor(() => {
expect(wrapper).toMatchSnapshot();
});
});
it('create custom panel', async () => {
const loading = false;
const fetchCustomPanels = jest.fn();
const customPanelData: CustomPanelListType[] = [];
const createCustomPanel = jest.fn();
const setBreadcrumbs = jest.fn();
const parentBreadcrumb = panelBreadCrumbs;
const renameCustomPanel = jest.fn();
const cloneCustomPanel = jest.fn();
const deleteCustomPanelList = jest.fn();
const addSamplePanels = jest.fn();
const utils = render(
);
fireEvent.click(screen.getAllByText('Create Dashboard')[0]);
await waitFor(() => {
expect(global.window.location.href).toContain('/create');
});
});
});