import React from 'react'; import { cleanup } from '@testing-library/react'; import { render } from '../../utils/theme-render-wrapper'; import { ThemeProvider } from '../@styles/theme-provider'; import type { Theme } from '../@styles/theme-provider'; import { StyledEngineProvider } from '@mui/material/styles'; import { ChartLegend } from './chart-legend'; declare module '@mui/styles/defaultTheme' { // eslint-disable-next-line @typescript-eslint/no-empty-interface interface DefaultTheme extends Theme {} } // Mock charts data const chartConfig = [ { name: 'chat', id: 'chat123', show: true, color: '#4DC9F6', type: 'area' }, { name: 'ticket', id: 'ticket234', show: true, color: '#E49307', type: 'area' }, { name: 'number', id: 'number345', show: false, type: 'line' }, { name: 'user', id: 'user456', show: true, type: 'bar', yAxisSecond: true, invisible: true } ]; const donutData = [ { name: 'One', value: 23, color: '#4DC9F6' }, { name: 'Two', value: 7, color: '#FBDF9C' }, { name: 'Three', value: 12 } ]; const postfix = '%'; const prefix = '$'; const clickHandler = jest.fn(); afterEach(cleanup); describe('', () => { it(`Should render Legend with a all data active`, () => { const { getByText, queryByText } = render( ); const buttonEl = getByText(chartConfig[0].name); buttonEl.click(); expect(clickHandler).toHaveBeenCalled(); const elm = queryByText(chartConfig[0].name); expect(elm?.innerHTML).toBe(chartConfig[0].name); const invisible = queryByText(chartConfig[3].name); expect(invisible).toBeNull(); }); it(`Should render Legend with a all data not active`, () => { const { queryByText } = render( ); const elm = queryByText(chartConfig[0].name); expect(elm?.innerHTML).toBe(chartConfig[0].name); }); it(`Should render Legend vertical vs postfix for donut`, () => { const { queryByText } = render( ); let elm = queryByText(donutData[0].name); expect(elm?.innerHTML).toBe(donutData[0].name); elm = queryByText(`${donutData[0].value}${postfix}`); expect(elm?.innerHTML).toBe(`${donutData[0].value}${postfix}`); }); it(`Should render Legend vertical with formatted values`, () => { const formatter = (value: number) => value.toFixed(2); const { queryByText } = render( ); let elm = queryByText(donutData[0].name); expect(elm?.innerHTML).toBe(donutData[0].name); elm = queryByText(formatter(donutData[0].value)); expect(elm?.innerHTML).toBe(formatter(donutData[0].value)); }); it(`Should render Legend vertical vs prefix for donut`, () => { const { queryByText } = render( ); let elm = queryByText(donutData[2].name); expect(elm?.innerHTML).toBe(donutData[2].name); elm = queryByText(`${prefix}${donutData[0].value}`); expect(elm?.innerHTML).toBe(`${prefix}${donutData[0].value}`); }); it(`Should render Legend vertical active`, () => { const { getByText, queryByText } = render( ); const buttonEl = getByText(chartConfig[0].name); buttonEl.click(); expect(clickHandler).toHaveBeenCalled(); const elm = queryByText(chartConfig[0].name); expect(elm?.innerHTML).toBe(chartConfig[0].name); const invisible = queryByText(chartConfig[3].name); expect(invisible).toBeNull(); }); it(`Should render Legend with a all data not active vertical`, () => { const { queryByText } = render( ); const elm = queryByText(chartConfig[0].name); expect(elm?.innerHTML).toBe(chartConfig[0].name); }); });