/* eslint-disable comma-spacing */
// Note: these tests are basically pin tests, given that we're rendering svgs,
// these tests serve to ensure that the rendered output is exactly at the author
// intended. As a consequence, you may need to re-pin these tests if you change
// things.
import React from 'react';
import { mount } from 'enzyme';
import { common } from '../../util/generic-tests';
import assert from 'assert';
import BarChart from './BarChart';
import EmptyStateWrapper from '../EmptyStateWrapper/EmptyStateWrapper';
const {
EmptyStateWrapper: { Title, Body },
} = BarChart;
describe('BarChart', () => {
let wrapper: any;
afterEach(() => {
if (wrapper) {
wrapper.unmount();
}
});
common(BarChart, {
exemptFunctionProps: [
'xAxisFormatter',
'yAxisFormatter',
'yAxisTooltipFormatter',
'yAxisTooltipDataFormatter',
'renderTooltipBody',
] as any,
getDefaultProps: () => ({
data: [
{ x: 'Monday', y: 1, y2: 2 },
{ x: 'Tuesday', y: 4, y2: 4 },
{ x: 'Wednesday', y: 8, y2: 1 },
{ x: 'Thursday', y: 20, y2: 15 },
{ x: 'Friday', y: 10, y2: 2 },
],
}),
});
describe('props', () => {
describe('isLoading', () => {
it('should show a `LoadingIndicator` if `isLoading`', () => {
wrapper = mount();
const loadingIndicatorWrapper = wrapper
.find(EmptyStateWrapper)
.find('LoadingIndicator');
assert(loadingIndicatorWrapper.prop('isLoading'));
});
});
});
describe('child components', () => {
describe('EmptyStateWrapper Title', () => {
it('should render the message title element', () => {
const titleText = 'Here is the Title Text';
wrapper = mount(
{titleText}
);
const messageTitleWrapper = wrapper
.find(EmptyStateWrapper)
.find('.lucid-EmptyStateWrapper-message-title');
assert.strictEqual(
messageTitleWrapper.text(),
titleText,
'must contain the title text'
);
});
});
describe('EmptyStateWrapper Body', () => {
it('should render the message body element', () => {
const bodyElement = (
);
wrapper = mount(
{bodyElement}
);
const messageBodyWrapper = wrapper.find(EmptyStateWrapper);
assert(
messageBodyWrapper.contains(bodyElement),
'must contain the body element'
);
});
});
});
describe('render', () => {
it('should render a basic chart', () => {
wrapper = mount(
);
assert.strictEqual(
wrapper.find('.lucid-Bar').length,
5,
'did not find the correct number of bars'
);
assert.strictEqual(
wrapper.find('.lucid-Axis').length,
2,
'did not find the correct number of axes'
);
});
it('should render a chart with multiple series', () => {
wrapper = mount(
);
assert.strictEqual(
wrapper.find('.lucid-Bar').length,
10,
'did not find the correct number of bars'
);
});
});
});