/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/
import React from 'react';
import { render } from '@testing-library/react';
import { Main } from '../main';
import httpClientMock from '../../../../test/httpMockClient';
import { configure, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { act } from 'react-dom/test-utils';
function setBreadcrumbs(array: []) {
jest.fn();
}
describe(' panel', () => {
configure({ adapter: new Adapter() });
test('render component', (done) => {
window = Object.create(window);
Object.defineProperty(window, 'location', {
configurable: true,
value: {
assign: jest.fn(),
href: 'reports-dashboards#/',
},
});
const { container } = render(
);
expect(container.firstChild).toMatchSnapshot();
done();
});
test('render component after create success', async () => {
delete window.location;
Object.defineProperty(window, 'location', {
configurable: true,
value: {
assign: jest.fn(),
href: 'reports-dashboards#/create=success',
},
});
const { container } = render(
);
expect(container.firstChild).toMatchSnapshot();
});
test('render component after edit success', async () => {
delete window.location;
Object.defineProperty(window, 'location', {
configurable: true,
value: {
assign: jest.fn(),
href: 'reports-dashboards#/edit=success',
},
});
const { container } = render(
);
expect(container.firstChild).toMatchSnapshot();
});
test('render component after delete success', async () => {
delete window.location;
Object.defineProperty(window, 'location', {
configurable: true,
value: {
assign: jest.fn(),
href: 'reports-dashboards#/delete=success',
},
});
const { container } = render(
);
expect(container.firstChild).toMatchSnapshot();
})
test('test refresh reports definitions button', async () => {
const promise = Promise.resolve();
const data = [
{
_id: 'abcdefg',
_source: {
query_url: '/app/visualize/edit/1234567890',
state: 'Created',
time_created: 123456789,
time_from: 123456789,
time_to: 1234567890,
report_definition: {
report_params: {
report_name: 'test create report definition trigger',
report_source: 'Dashboard',
description: '',
core_params: {
base_url: 'http://localhost:5601',
report_format: 'png',
header: '',
footer: '',
time_duration: 'PT30M',
},
},
delivery: {
delivery_type: '',
delivery_params: {},
},
trigger: {
trigger_type: 'Schedule',
trigger_params: {},
},
},
},
},
];
httpClientMock.get = jest.fn().mockResolvedValue({
data,
});
const component = mount(
);
await act(() => promise);
const generate = component.find('button').at(7);
generate.simulate('click');
await act(() => promise);
});
test('test refresh reports table button', async () => {
const promise = Promise.resolve();
const data = [
{
_id: 'abcdefg',
_source: {
query_url: '/app/visualize/edit/1234567890',
state: 'Created',
time_created: 123456789,
time_from: 123456789,
time_to: 1234567890,
report_definition: {
report_params: {
report_name: 'test create report definition trigger',
report_source: 'Dashboard',
description: '',
core_params: {
base_url: 'http://localhost:5601',
report_format: 'png',
header: '',
footer: '',
time_duration: 'PT30M',
},
},
delivery: {
delivery_type: '',
delivery_params: {},
},
trigger: {
trigger_type: 'Schedule',
trigger_params: {},
},
},
},
},
];
httpClientMock.get = jest.fn().mockResolvedValue({
data,
});
const component = mount(
);
await act(() => promise);
const generate = component.find('button').at(0);
generate.simulate('click');
await act(() => promise);
});
// TODO: mock catch() error response to contain status code
test.skip('test error toasts posted', async () => {
jest.spyOn(console, 'log').mockImplementation(() => {}); // silence console log error from main
const promise = Promise.resolve();
httpClientMock.get = jest.fn().mockResolvedValue({
response: null,
});
const component = mount(
);
const generate = component.find('button').at(7);
try {
generate.simulate('click');
await act(() => promise);
} catch (e) {
await act(() => promise);
}
});
});