/* * 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 } from '@testing-library/react'; import { AnomaliesChart, AnomaliesChartProps } from '../AnomaliesChart'; import { mockedStore } from '../../../../redux/utils/testUtils'; import { Provider } from 'react-redux'; import { INITIAL_ANOMALY_SUMMARY } from '../../utils/constants'; import { getRandomDetector } from '../../../../redux/reducers/__tests__/utils'; import { CoreServicesContext } from '../../../../components/CoreServices/CoreServices'; import { coreServicesMock } from '../../../../../test/mocks'; import { FAKE_ANOMALIES_RESULT, FAKE_DATE_RANGE, } from '../../../../pages/utils/__tests__/constants'; const DEFAULT_PROPS = { onDateRangeChange: jest.fn(), onZoomRangeChange: jest.fn(), title: 'Test title', bucketizedAnomalies: true, anomalySummary: INITIAL_ANOMALY_SUMMARY, dateRange: FAKE_DATE_RANGE, isLoading: false, showAlerts: false, isNotSample: true, detector: getRandomDetector(true), children: [], isHCDetector: false, isHistorical: false, detectorCategoryField: [], onHeatmapCellSelected: jest.fn(), onDisplayOptionChanged: jest.fn(), selectedHeatmapCell: undefined, newDetector: undefined, zoomRange: undefined, anomaliesResult: FAKE_ANOMALIES_RESULT, entityAnomalySummaries: [], } as AnomaliesChartProps; const renderDataFilter = (chartProps: AnomaliesChartProps) => ({ ...render( ), }); describe(' spec', () => { test('renders the component for sample / preview', () => { console.error = jest.fn(); const { getByText, getAllByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: false, isHCDetector: false, isNotSample: false, }); expect(getByText('Test title')).not.toBeNull(); expect(getAllByText('Sample anomaly occurrences').length >= 1); expect(getAllByText('Sample anomaly grade').length >= 1); expect(getAllByText('Sample confidence').length >= 1); }); test('renders the component for RT, non-HC detector', () => { console.error = jest.fn(); const { getByText, getAllByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: false, isHCDetector: false, }); expect(getByText('Test title')).not.toBeNull(); expect(getAllByText('Anomaly occurrences').length >= 1); expect(getAllByText('Anomaly grade').length >= 1); expect(getAllByText('Confidence').length >= 1); expect(getAllByText('Last anomaly occurrence').length >= 1); }); test('renders the component for RT, HC detector', () => { console.error = jest.fn(); const { getByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: false, isHCDetector: true, detectorCategoryField: ['category-1'], selectedCategoryFields: [{ label: 'category-1' }], }); getByText('Test title'); getByText('Top 10'); getByText('category-1'); }); test('renders the component for RT, multi-category-HC detector', () => { console.error = jest.fn(); const { getByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: false, isHCDetector: true, detectorCategoryField: ['category-1, category-2'], selectedCategoryFields: [ { label: 'category-1' }, { label: 'category-2' }, ], }); getByText('Test title'); getByText('Top 10'); getByText('category-1'); getByText('category-2'); }); test('renders the component for historical, non-HC detector', () => { console.error = jest.fn(); const { getAllByText, queryByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: true, isHCDetector: false, }); expect(queryByText('Test title')).not.toBeNull(); expect(getAllByText('Anomaly occurrences').length >= 1); expect(getAllByText('Average anomaly grade').length >= 1); expect(queryByText('Confidence')).toBeNull(); }); test('renders the component for historical, HC detector', () => { console.error = jest.fn(); const { getByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: true, isHCDetector: true, detectorCategoryField: ['category-1'], selectedCategoryFields: [{ label: 'category-1' }], }); getByText('Test title'); getByText('Top 10'); getByText('category-1'); }); test('renders the component for historical, multi-category-HC detector', () => { console.error = jest.fn(); const { getByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: true, isHCDetector: true, detectorCategoryField: ['category-1', 'category-2'], selectedCategoryFields: [ { label: 'category-1' }, { label: 'category-2' }, ], }); getByText('Test title'); getByText('Top 10'); getByText('category-1'); getByText('category-2'); }); test('renders the component with a subset of category fields selected', () => { console.error = jest.fn(); const { getByText, queryByText } = renderDataFilter({ ...DEFAULT_PROPS, isHistorical: true, isHCDetector: true, detectorCategoryField: ['category-1', 'category-2'], selectedCategoryFields: [{ label: 'category-1' }], }); getByText('Test title'); getByText('Top 10'); getByText('category-1'); expect(queryByText('category-2')).toBeNull(); }); });