diff --git a/packages/common/editors/__tests__/EditorContainer.spec.js b/packages/common/editors/__tests__/EditorContainer.spec.js
index 026d162dc0..6b2897753d 100644
--- a/packages/common/editors/__tests__/EditorContainer.spec.js
+++ b/packages/common/editors/__tests__/EditorContainer.spec.js
@@ -1,83 +1,107 @@
const React = require('react');
-const ReactDOM = require('react-dom');
const rewire = require('rewire');
const EditorContainer = rewire('../EditorContainer.js');
-const TestUtils = require('react-dom/test-utils');
const SimpleTextEditor = require('../SimpleTextEditor');
const EditorBase = require('../EditorBase');
-import { shallow } from 'enzyme';
+import { mount, shallow } from 'enzyme';
-describe('Editor Container Tests', () => {
- let component;
- let container;
-
- let fakeColumn = {
- name: 'col1',
- key: 'col1',
- width: 100
- };
+const fakeColumn = {
+ name: 'col1',
+ key: 'col1',
+ width: 100
+};
- let rowData = {
+const defaultProps = {
+ rowData: {
col1: 'I',
col2: 'love',
col3: 'Testing'
- };
+ },
+ column: fakeColumn,
+ value: 'Adwolf',
+ height: 50
+};
+
+const getComponent = (props) => {
+ const shallowWrapper = shallow();
+ const mountedWrapper = mount();
+
+ return { shallowWrapper, mountedWrapper };
+};
+
+describe('Editor Container Tests', () => {
+ let component;
describe('Basic render tests', () => {
beforeEach(() => {
- component = TestUtils.renderIntoDocument();
+ ({ mountedWrapper: component } = getComponent());
});
+
it('should create a new EditorContainer instance', () => {
expect(component).toBeDefined();
});
it('should render a simpleTextEditor if no column.editor property', () => {
- let editor = TestUtils.findRenderedComponentWithType(component, SimpleTextEditor);
+ const editor = component.find(SimpleTextEditor);
+
expect(editor).toBeDefined();
});
it('should select the text of the default input when the editor is rendered', () => {
- function isTextSelected(input) {
+ const isTextSelected = (input) => {
if (typeof input.selectionStart === 'number') {
return input.selectionStart === 0 && input.selectionEnd === input.value.length;
} else if (typeof document.selection !== 'undefined') {
input.focus();
return document.selection.createRange().text === input.value;
}
- }
+ };
+ const editorNode = component.find(SimpleTextEditor).instance().getInputNode();
- let editor = TestUtils.findRenderedComponentWithType(component, SimpleTextEditor);
- expect(isTextSelected(editor.getInputNode())).toBeDefined();
+ expect(isTextSelected(editorNode)).toBeDefined();
});
it('should render the editor with the correct properties', () => {
- let editor = TestUtils.findRenderedComponentWithType(component, SimpleTextEditor);
- expect(editor.props.value).toEqual('Adwolf');
- expect(editor.props.column).toEqual(fakeColumn);
+ const editor = component.find(SimpleTextEditor);
+
+ expect(editor.props().value).toEqual('Adwolf');
+ expect(editor.props().column).toEqual(fakeColumn);
});
it('should render the editor container div with correct properties', () => {
- const renderComponent = (props) => {
- const wrapper = shallow();
- return wrapper;
- };
- const props = {
- rowData: rowData,
- value: 'Adwolf',
- column: fakeColumn,
- height: 50
- };
- let editorDiv = renderComponent(props).find('div').at(0);
+ const editorDiv = component.find('div').at(0);
+
expect(editorDiv.props().className).toBeDefined();
expect(editorDiv.props().onBlur).toBeDefined();
expect(editorDiv.props().onKeyDown).toBeDefined();
expect(editorDiv.props().children).toBeDefined();
});
+
+ describe('Frozen columns', () => {
+ const frozenProps = {
+ column: { ...fakeColumn, frozen: true },
+ left: 60,
+ top: 0,
+ scrollTop: 0,
+ scrollLeft: 250
+ };
+
+ it('should not subtract scrollLeft value from editors left position when column is frozen', () => {
+ const { shallowWrapper } = getComponent(frozenProps);
+ const editorDiv = shallowWrapper.find('div').at(0);
+ expect(editorDiv.props().style.transform).toBe('translate(60px, 0px)');
+ });
+
+ it('should subtract scrollLeft value from editors left position when column is not frozen', () => {
+ const unfrozenProps = { ...frozenProps };
+ unfrozenProps.column.frozen = false;
+
+ const { shallowWrapper } = getComponent(unfrozenProps);
+ const editorDiv = shallowWrapper.find('div').at(0);
+ expect(editorDiv.props().style.transform).toBe('translate(-190px, 0px)');
+ });
+ });
});
describe('Custom Editors', () => {
@@ -87,141 +111,122 @@ describe('Editor Container Tests', () => {
}
}
- let column;
beforeEach(() => {
- column = {
- key: 'col1',
- name: 'col1',
- width: 100
- };
+ component = getComponent({
+ value: 'SupernaviX',
+ column: { ...fakeColumn, editor: }
+ }).mountedWrapper;
});
it('should render element custom editors', () => {
- column.editor = ;
- component = TestUtils.renderIntoDocument();
- let editor = TestUtils.findRenderedComponentWithType(component, TestEditor);
+ const editor = component.find(TestEditor);
+
expect(editor).toBeDefined();
- expect(editor.props.value).toBeDefined();
- expect(editor.props.onCommit).toBeDefined();
- expect(editor.props.onCommitCancel).toBeDefined();
+ expect(editor.props().value).toBeDefined();
+ expect(editor.props().onCommit).toBeDefined();
+ expect(editor.props().onCommitCancel).toBeDefined();
});
it('should render component custom editors', () => {
- column.editor = TestEditor;
- component = TestUtils.renderIntoDocument();
- let editor = TestUtils.findRenderedComponentWithType(component, TestEditor);
+ component.setProps({ column: { ...fakeColumn, editor: TestEditor } });
+ const editor = component.find(TestEditor);
+
expect(editor).toBeDefined();
- expect(editor.props.value).toBeDefined();
- expect(editor.props.onCommit).toBeDefined();
+ expect(editor.props().value).toBeDefined();
+ expect(editor.props().onCommit).toBeDefined();
});
it('should commit if any element outside the editor is clicked', () => {
- column.editor = ;
- component = TestUtils.renderIntoDocument();
- spyOn(component, 'commit');
- TestUtils.Simulate.blur(ReactDOM.findDOMNode(component), {relatedTarget: document.body, currentTarget: ReactDOM.findDOMNode(component)});
- expect(component.commit).toHaveBeenCalled();
+ const instance = component.instance();
+
+ spyOn(instance, 'commit');
+ component.simulate('blur', {
+ relatedTarget: document.body,
+ currentTarget: instance.getInputNode()
+ });
+
+ expect(instance.commit).toHaveBeenCalled();
});
it('should not commit if any element inside the editor is clicked', () => {
- column.editor = ;
- component = TestUtils.renderIntoDocument();
- let editor = TestUtils.findRenderedComponentWithType(component, TestEditor);
- spyOn(component, 'commit');
- TestUtils.Simulate.click(ReactDOM.findDOMNode(editor));
- expect(component.commit.calls.count()).toEqual(0);
+ const editor = component.find(TestEditor);
+ const instance = component.instance();
+
+ spyOn(instance, 'commit');
+ editor.simulate('click');
+
+ expect(instance.commit.calls.count()).toEqual(0);
});
it('should call onCommitCancel when editor cancels editing', () => {
- column.editor = ;
const onCommit = jasmine.createSpy();
const onCommitCancel = jasmine.createSpy();
- component = TestUtils.renderIntoDocument(
- );
- let editor = TestUtils.findRenderedComponentWithType(component, TestEditor);
- editor.props.onCommitCancel();
+
+ component.setProps({ onCommit, onCommitCancel });
+ const editor = component.find(TestEditor);
+
+ editor.props().onCommitCancel();
+
expect(onCommitCancel).toHaveBeenCalled();
expect(onCommitCancel.calls.count()).toEqual(1);
expect(onCommit).not.toHaveBeenCalled();
});
it('should not commit changes on componentWillUnmount if editor cancels editing', () => {
- column.editor = ;
const onCommit = jasmine.createSpy();
const onCommitCancel = jasmine.createSpy();
- component = TestUtils.renderIntoDocument();
- let editor = TestUtils.findRenderedComponentWithType(component, TestEditor);
- editor.props.onCommitCancel();
- component.componentWillUnmount();
+
+ component.setProps({ onCommit, onCommitCancel });
+ const editor = component.find(TestEditor);
+
+ editor.props().onCommitCancel();
+ component.instance().componentWillUnmount();
+
expect(onCommit).not.toHaveBeenCalled();
});
});
describe('Events', () => {
+ let container;
+
beforeEach(() => {
container = document.createElement('div');
document.body.appendChild(container);
- component = ReactDOM.render(, container);
+ { ...defaultProps }/>, { attachTo: container });
});
afterEach(() => {
- // remove our container
document.body.removeChild(container);
});
xit('hitting enter should call commit only once', () => {
- let editor = TestUtils.findRenderedComponentWithType(component, SimpleTextEditor);
- TestUtils.Simulate.keyDown(editor.getInputNode(), {key: 'Enter'});
- expect(onCommit).toHaveBeenCalled();
- expect(onCommit.calls.count()).toEqual(1);
+ const editor = component.find(SimpleTextEditor);
+
+ editor.simulate('keydown', { key: 'Enter' });
+
+ expect(component.props().onCommit).toHaveBeenCalled();
+ expect(component.props().onCommit.calls.count()).toEqual(1);
});
it('hitting escape should call commitCancel only once', () => {
- let editor = TestUtils.findRenderedComponentWithType(component, SimpleTextEditor);
- TestUtils.Simulate.keyDown(editor.getInputNode(), {key: 'Escape'});
- expect(component.props.onCommitCancel).toHaveBeenCalled();
- expect(component.props.onCommitCancel.calls.count()).toEqual(1);
+ const editor = component.find(SimpleTextEditor);
+
+ editor.simulate('keydown', { key: 'Escape' });
+
+ expect(component.props().onCommitCancel).toHaveBeenCalled();
+ expect(component.props().onCommitCancel.calls.count()).toEqual(1);
});
it('hitting escape should not call commit changes on componentWillUnmount', () => {
- let editor = TestUtils.findRenderedComponentWithType(component, SimpleTextEditor);
- TestUtils.Simulate.keyDown(editor.getInputNode(), {key: 'Escape'});
- ReactDOM.unmountComponentAtNode(container);
- expect(component.props.onCommit).not.toHaveBeenCalled();
+ const editor = component.find(SimpleTextEditor);
+
+ editor.simulate('keydown', { key: 'Escape' });
+ component.detach();
+
+ expect(component.props().onCommit).not.toHaveBeenCalled();
});
});
});