2018-09-08 10:06:18 +03:00
|
|
|
import React from 'react';
|
|
|
|
import { shallow } from 'enzyme';
|
|
|
|
import { Doughnut, HorizontalBar } from 'react-chartjs-2';
|
|
|
|
import { keys, values } from 'ramda';
|
|
|
|
import { GraphCard } from '../../src/visits/GraphCard';
|
|
|
|
|
|
|
|
describe('<GraphCard />', () => {
|
|
|
|
let wrapper;
|
|
|
|
const stats = {
|
|
|
|
foo: 123,
|
|
|
|
bar: 456,
|
|
|
|
};
|
|
|
|
|
|
|
|
afterEach(() => {
|
|
|
|
if (wrapper) {
|
|
|
|
wrapper.unmount();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
it('renders Doughnut when is not a bar chart', () => {
|
|
|
|
wrapper = shallow(<GraphCard title="The chart" stats={stats} />);
|
|
|
|
const doughnut = wrapper.find(Doughnut);
|
|
|
|
const horizontal = wrapper.find(HorizontalBar);
|
|
|
|
|
|
|
|
expect(doughnut).toHaveLength(1);
|
|
|
|
expect(horizontal).toHaveLength(0);
|
|
|
|
|
|
|
|
const { labels, datasets: [{ title, data, backgroundColor, borderColor }] } = doughnut.prop('data');
|
2018-09-08 21:34:04 +03:00
|
|
|
const { legend, scales } = doughnut.prop('options');
|
2018-09-08 10:06:18 +03:00
|
|
|
|
|
|
|
expect(title).toEqual('The chart');
|
|
|
|
expect(labels).toEqual(keys(stats));
|
|
|
|
expect(data).toEqual(values(stats));
|
|
|
|
expect(backgroundColor).toEqual([
|
|
|
|
'#97BBCD',
|
|
|
|
'#DCDCDC',
|
|
|
|
'#F7464A',
|
|
|
|
'#46BFBD',
|
|
|
|
'#FDB45C',
|
|
|
|
'#949FB1',
|
|
|
|
'#4D5360',
|
|
|
|
]);
|
|
|
|
expect(borderColor).toEqual('white');
|
2018-09-08 21:34:04 +03:00
|
|
|
expect(legend).toEqual({ position: 'right' });
|
|
|
|
expect(scales).toBeNull();
|
2018-09-08 10:06:18 +03:00
|
|
|
});
|
|
|
|
|
|
|
|
it('renders HorizontalBar when is not a bar chart', () => {
|
|
|
|
wrapper = shallow(<GraphCard isBarChart title="The chart" stats={stats} />);
|
|
|
|
const doughnut = wrapper.find(Doughnut);
|
|
|
|
const horizontal = wrapper.find(HorizontalBar);
|
|
|
|
|
|
|
|
expect(doughnut).toHaveLength(0);
|
|
|
|
expect(horizontal).toHaveLength(1);
|
|
|
|
|
|
|
|
const { datasets: [{ backgroundColor, borderColor }] } = horizontal.prop('data');
|
2018-09-08 21:34:04 +03:00
|
|
|
const { legend, scales } = horizontal.prop('options');
|
2018-09-08 10:06:18 +03:00
|
|
|
|
|
|
|
expect(backgroundColor).toEqual('rgba(70, 150, 229, 0.4)');
|
|
|
|
expect(borderColor).toEqual('rgba(70, 150, 229, 1)');
|
2018-09-08 21:34:04 +03:00
|
|
|
expect(legend).toEqual({ display: false });
|
|
|
|
expect(scales).toEqual({
|
|
|
|
xAxes: [
|
|
|
|
{
|
|
|
|
ticks: { beginAtZero: true },
|
|
|
|
},
|
|
|
|
],
|
|
|
|
});
|
2018-09-08 10:06:18 +03:00
|
|
|
});
|
|
|
|
});
|