wix-style-react
Version:
72 lines (59 loc) • 2.21 kB
JavaScript
import React from 'react';
import { createRendererWithUniDriver, cleanup } from '../../../test/utils/unit';
import StackedBarChart from '../StackedBarChart';
import { stackedBarChartPrivateDriverFactory } from './StackedBarChart.private.uni.driver';
describe(StackedBarChart.displayName, () => {
const render = createRendererWithUniDriver(
stackedBarChartPrivateDriverFactory,
);
const data = [
{ label: 'Jan 20', values: [500, 200] },
{ label: 'Feb 20', values: [200, 700] },
{ label: 'Mar 20', values: [0, 400] },
{ label: 'Apr 20', values: [900, 100] },
{ label: 'Mai 20', values: [300, 300] },
{ label: 'Jun 20', values: [400, 300] },
{ label: 'Jul 20', values: [100, 100] },
{ label: 'Aug 20', values: [0, 0] },
{ label: 'Sep 20', values: [800, 0] },
{ label: 'Oct 20', values: [600, 300] },
{ label: 'Nov 20', values: [200, 300] },
{ label: 'Dec 20', values: [300, 200] },
];
afterEach(cleanup);
it('should render', async () => {
const { driver } = render(<StackedBarChart data={data} />);
expect(await driver.exists()).toBe(true);
});
it('should render tooltips', async () => {
const template = 'tooltip';
const observer = jest.fn();
const tooltipTemplate = item => {
observer(item);
return template;
};
const { driver } = render(
<StackedBarChart data={data} tooltipTemplate={tooltipTemplate} />,
);
expect(await driver.getTooltipContentAt(4)).toBe(template);
expect(observer).toHaveBeenCalledTimes(data.length);
});
it('should update with data from data prop', async () => {
const tooltipTemplate = () => {
return 'tooltip';
};
const { driver, rerender } = render(
<StackedBarChart data={data} tooltipTemplate={tooltipTemplate} />,
);
expect(await driver.getDataLength()).toBe(data.length);
const newData = [
{ label: 'Jan 20', values: [500, 200] },
{ label: 'Feb 20', values: [200, 700] },
{ label: 'Mar 20', values: [0, 400] },
];
rerender(
<StackedBarChart data={newData} tooltipTemplate={tooltipTemplate} />,
);
expect(await driver.getDataLength()).toBe(newData.length);
});
});