2020-11-14 00:44:26 +03:00
|
|
|
import { ReactNode } from 'react';
|
2020-09-03 21:34:22 +03:00
|
|
|
import { shallow, ShallowWrapper } from 'enzyme';
|
2020-06-06 13:16:19 +03:00
|
|
|
import { Card, CardBody, CardHeader, CardFooter } from 'reactstrap';
|
2021-09-18 20:05:28 +03:00
|
|
|
import { ChartCard } from '../../../src/visits/charts/ChartCard';
|
2020-06-06 13:16:19 +03:00
|
|
|
|
2021-09-18 20:05:28 +03:00
|
|
|
describe('<ChartCard />', () => {
|
2020-09-03 21:34:22 +03:00
|
|
|
let wrapper: ShallowWrapper;
|
|
|
|
const createWrapper = (title: Function | string = '', footer?: ReactNode) => {
|
2021-09-18 20:05:28 +03:00
|
|
|
wrapper = shallow(<ChartCard title={title} footer={footer} />);
|
2020-06-06 13:16:19 +03:00
|
|
|
|
|
|
|
return wrapper;
|
|
|
|
};
|
|
|
|
|
2020-09-03 21:34:22 +03:00
|
|
|
afterEach(() => wrapper?.unmount());
|
2020-06-06 13:16:19 +03:00
|
|
|
|
|
|
|
it('renders expected components', () => {
|
|
|
|
const wrapper = createWrapper();
|
|
|
|
const card = wrapper.find(Card);
|
|
|
|
const header = wrapper.find(CardHeader);
|
|
|
|
const body = wrapper.find(CardBody);
|
|
|
|
const footer = wrapper.find(CardFooter);
|
|
|
|
|
|
|
|
expect(card).toHaveLength(1);
|
|
|
|
expect(header).toHaveLength(1);
|
|
|
|
expect(body).toHaveLength(1);
|
|
|
|
expect(footer).toHaveLength(0);
|
|
|
|
});
|
|
|
|
|
|
|
|
it.each([
|
2022-03-26 14:17:42 +03:00
|
|
|
['the title', 'the title'],
|
|
|
|
[() => 'the title from func', 'the title from func'],
|
2020-06-06 13:16:19 +03:00
|
|
|
])('properly renders title by parsing provided value', (title, expectedTitle) => {
|
|
|
|
const wrapper = createWrapper(title);
|
|
|
|
const header = wrapper.find(CardHeader);
|
|
|
|
|
|
|
|
expect(header.html()).toContain(expectedTitle);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('renders footer only when provided', () => {
|
|
|
|
const wrapper = createWrapper('', 'the footer');
|
|
|
|
const footer = wrapper.find(CardFooter);
|
|
|
|
|
|
|
|
expect(footer).toHaveLength(1);
|
|
|
|
expect(footer.html()).toContain('the footer');
|
|
|
|
});
|
|
|
|
});
|