import {render, screen} from 'sentry-test/reactTestingLibrary'; import BaseChart from 'sentry/components/charts/baseChart'; import MarkLine from 'sentry/components/charts/components/markLine'; import type {Series} from 'sentry/types/echarts'; import Chart, {ChartType} from 'sentry/views/insights/common/components/chart'; jest.mock('sentry/components/charts/baseChart', () => { return jest.fn().mockImplementation(() =>
); }); jest.mock('react', () => { return { ...jest.requireActual('react'), useRef: jest.fn(), }; }); // XXX: Mocking useRef throws an error for AnimatePrecense, so it must be mocked as well jest.mock('framer-motion', () => { return { ...jest.requireActual('framer-motion'), AnimatePresence: jest.fn().mockImplementation(({children}) =>
{children}
), }; }); describe('Chart', function () { test('it shows an error panel if an error prop is supplied', function () { const parsingError = new Error('Could not parse chart data'); render( ); expect(screen.getByTestId('chart-error-panel')).toBeInTheDocument(); }); it('does not propagate mark line to the incomplete series', function () { const start = Date.now(); const mockedSeries: Series[] = [ { seriesName: 'series', data: [ {name: start - 120_000, value: 5}, {name: start - 90_000, value: 4}, {name: start - 60_000, value: 3}, {name: start - 30_000, value: 2}, {name: start, value: 1}, ], markLine: MarkLine({ data: [ { type: 'average', yAxis: 3, }, ], }), }, ]; render(); expect(jest.mocked(BaseChart).mock.calls[0][0].series?.[0]).toHaveProperty( 'markLine' ); expect(jest.mocked(BaseChart).mock.calls[0][0].series?.[1]).not.toHaveProperty( 'markLine' ); }); });