import { mount } from 'enzyme';
import { Table, TableLayout } from './periodic-table.component';
import * as React from 'react';
const enabled = { H: true, Li: true };
describe('
', () => {
it('should be rendered', () => {
const wrapper = renderElement(enabled, { ...enabled });
expect(wrapper.find('.table-container').length).toBe(1);
expect(wrapper.find('.mat-element').length).toBe(120);
});
it('should have correct enabled state', () => {
const wrapper = renderElement({}, enabled);
expect(wrapper.find('.mat-element').at(0).hasClass('enabled')).toBe(true);
expect(wrapper.find('.mat-element').at(1).hasClass('enabled')).toBe(false);
expect(wrapper.find('.mat-element').at(2).hasClass('enabled')).toBe(true);
});
it('should have correct disabled state', () => {
const wrapper = renderElement({ ...enabled });
expect(wrapper.find('.mat-element').at(0).hasClass('disabled')).toBe(true);
expect(wrapper.find('.mat-element').at(1).hasClass('enabled')).toBe(false);
expect(wrapper.find('.mat-element').at(2).hasClass('disabled')).toBe(true);
});
it('should have correct hidden state', () => {
const wrapper = renderElement({}, {}, { ...enabled });
expect(wrapper.find('.mat-element').at(0).hasClass('hidden')).toBe(true);
expect(wrapper.find('.mat-element').at(1).hasClass('hidden')).toBe(false);
expect(wrapper.find('.mat-element').at(2).hasClass('hidden')).toBe(true);
});
// it('click callback should be called', () => {
// const click = jest.fn();
// const hover = jest.fn();
// const wrapper = renderElement({}, {}, { ...enabled }, click, hover);
// expect(
// wrapper
// .find('.mat-element')
// .at(0)
// .simulate('click')
// );
// expect(click).toHaveBeenCalled();
// expect(hover).toHaveBeenCalledTimes(0);
// });
it('hover callback should be called', () => {
const click = jest.fn();
const hover = jest.fn();
const wrapper = renderElement({}, {}, { ...enabled }, click, hover);
expect(wrapper.find('.mat-element').at(0).simulate('mouseover'));
expect(hover).toHaveBeenCalled();
expect(click).toHaveBeenCalledTimes(0);
});
});
export function renderElement(
disabled = {},
enabled = {},
hidden = {},
onClick = () => {},
onHover = () => {},
heatmap = {},
min?: string,
max?: string
) {
// we use mount to test the rendering of the underlying elements
return mount(
);
}