import { shallow } from 'enzyme';
import { DISPLAY_MODE, PeriodicElement } from './periodic-element.component';
import * as React from 'react'; // for some reasons, uppercase does not work on Docker
import { MatElement, TABLE_DICO_V2 } from '../periodic-table-data/table-v2';
describe('', () => {
it('should be rendered', () => {
const wrapper = renderElement();
expect(wrapper.find('.mat-element').length).toBe(1);
expect(wrapper.find('.mat-element').hasClass('disabled')).toBe(false);
expect(wrapper.find('.mat-element').hasClass('enabled')).toBe(false);
});
it('should have correct enabled/disabled state / 1', () => {
const wrapper = renderElement(true, true);
expect(wrapper.find('.mat-element').hasClass('disabled')).toBe(true);
expect(wrapper.find('.mat-element').hasClass('enabled')).toBe(false);
});
it('should have correct enabled/disabled state / 2', () => {
const wrapper = renderElement(true, true);
expect(wrapper.find('.mat-element').hasClass('disabled')).toBe(true);
expect(wrapper.find('.mat-element').hasClass('enabled')).toBe(false);
});
it('should have correct enabled/disabled state / 3', () => {
const wrapper = renderElement(true, false);
expect(wrapper.find('.mat-element').hasClass('disabled')).toBe(true);
expect(wrapper.find('.mat-element').hasClass('enabled')).toBe(false);
});
it('click callback shoud be called', () => {
const mockCallBack = jest.fn();
const wrapper = renderElement(true, false, mockCallBack);
wrapper.find('.mat-element').simulate('click');
expect(mockCallBack).toHaveBeenCalledTimes(1);
});
it('should render advanced display mode', () => {
const wrapper = renderElement(true, false, () => {}, TEST_ELEMENT, DISPLAY_MODE.DETAILED);
expect(wrapper.find('.main-panel').length).toBe(1);
});
it('should render shells', () => {
//TODO(chab) actually tested in an integration test, see table-state.spec.tsx, but should be unit tested here
const wrapper = renderElement(true, false, () => {}, TEST_ELEMENT, DISPLAY_MODE.DETAILED);
expect(wrapper.find('.mat-side-panel').length).toBe(1);
});
it('should accept strings', () => {
const wrapper = renderElement(false, false, () => {}, 'O');
expect(wrapper.find('.mat-element').length).toBe(1);
expect(wrapper.find('.mat-element').hasClass('disabled')).toBe(false);
expect(wrapper.find('.mat-element').hasClass('enabled')).toBe(false);
});
it('return an empty div, if an incorrect el is passed', () => {
const wrapper = renderElement(false, false, () => {}, 'dsfdff');
expect(wrapper.find('.mat-element').length).toBe(0);
});
});
const TEST_ELEMENT = TABLE_DICO_V2['H'];
function renderElement(
disabled = false,
enabled = false,
onClick = () => {},
element: MatElement | string = TEST_ELEMENT,
display = DISPLAY_MODE.SIMPLE
) {
return shallow(
);
}