/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*/
import React from 'react';
import { render, waitFor } from '@testing-library/react';
import { AnomalyDetectionOverview } from '../AnomalyDetectionOverview';
import { Provider } from 'react-redux';
import {
MemoryRouter as Router,
Redirect,
Route,
Switch,
} from 'react-router-dom';
import { httpClientMock, coreServicesMock } from '../../../../../test/mocks';
import configureStore from '../../../../redux/configureStore';
import {
Detectors,
initialDetectorsState,
} from '../../../../redux/reducers/ad';
import { sampleHttpResponses } from '../../../Overview/utils/constants';
import { CoreServicesContext } from '../../../../components/CoreServices/CoreServices';
const renderWithRouter = (isLoadingDetectors: boolean = false) => ({
...render(
(
{' '}
)}
/>
),
});
describe(' spec', () => {
jest.clearAllMocks();
describe('No sample detectors created', () => {
test('renders component', async () => {
httpClientMock.get = jest.fn().mockResolvedValue({
ok: true,
response: { detectorList: [], totalDetectors: 0 },
});
const { container, getByText, queryByText } = renderWithRouter();
expect(container).toMatchSnapshot();
getByText('Anomaly detection');
getByText('Monitor HTTP responses');
getByText('Monitor eCommerce orders');
getByText('Monitor host health');
expect(queryByText('INSTALLED')).toBeNull();
expect(queryByText('Detector created')).toBeNull();
expect(queryByText('View detector and sample data')).toBeNull();
});
});
describe('Some detectors created', () => {
jest.clearAllMocks();
test('renders component with sample detector', async () => {
httpClientMock.get = jest.fn().mockResolvedValue({
ok: true,
response: {
detectorList: [
{
id: 'sample-detector-id',
name: sampleHttpResponses.detectorName,
indices: sampleHttpResponses.indexName,
totalAnomalies: 0,
lastActiveAnomaly: 0,
},
],
totalDetectors: 1,
},
});
const { container, getByText, getAllByText } = renderWithRouter();
await waitFor(() => {});
expect(container).toMatchSnapshot();
getByText('Anomaly detection');
getByText('Monitor HTTP responses');
getByText('Monitor eCommerce orders');
getByText('Monitor host health');
expect(getAllByText('Detector created')).toHaveLength(1);
expect(getAllByText('View detector and sample data')).toHaveLength(1);
expect(getAllByText('INSTALLED')).toHaveLength(1);
});
test('renders component with non-sample detector', async () => {
httpClientMock.get = jest.fn().mockResolvedValue({
ok: true,
response: {
detectorList: [
{
id: 'non-sample-detector-id',
name: 'non-sample-detector',
indices: 'non-sample-index',
totalAnomalies: 0,
lastActiveAnomaly: 0,
},
],
totalDetectors: 1,
},
});
const { container, getByText, queryByText } = renderWithRouter();
await waitFor(() => {});
expect(container).toMatchSnapshot();
getByText('Anomaly detection');
getByText('Monitor HTTP responses');
getByText('Monitor eCommerce orders');
getByText('Monitor host health');
expect(queryByText('INSTALLED')).toBeNull();
expect(queryByText('Detector created')).toBeNull();
});
});
});