import React from 'react'; import { mount } from 'enzyme'; import { expect } from 'chai'; import { getNode, getApi, getColumn, getActions, notCalledExcept, getContext, } from '../../../test/aggrid-helper'; import CellRenderer from './cell-renderer'; describe.skip('', function () { describe('#render', function () { let component; let rowNode; let value; const api = getApi(); const column = getColumn(); const actions = getActions(); const context = getContext([]); describe('element is valid', function () { before(function (done) { rowNode = getNode({ field1: 'value' }); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the element type correctly', function () { const wrapper = component.find('.table-view-cell .element-value'); expect( wrapper.matchesElement(
"value"
) ).to.eq(true); }); it('does not render the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.not.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('element is added', function () { before(function (done) { rowNode = getNode({}); rowNode.data.hadronDocument.insertEnd('field1', 'value'); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the cell as added', function () { const wrapper = component.find( '.table-view-cell-is-added .element-value' ); expect( wrapper.matchesElement(
"value"
) ).to.eq(true); }); it('renders the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('element is modified', function () { before(function (done) { rowNode = getNode({ field1: 'value' }); rowNode.data.hadronDocument.get('field1').edit('a new value'); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the element as modified', function () { const wrapper = component.find( '.table-view-cell-is-edited .element-value' ); expect( wrapper.matchesElement(
"a new value"
) ).to.eq(true); }); it('renders the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('element is removed', function () { before(function (done) { rowNode = getNode({ field1: 'value' }); rowNode.data.hadronDocument.get('field1').remove(); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the element as removed', function () { const wrapper = component.find('.table-view-cell-is-deleted'); expect(wrapper.text()).to.contain('Deleted field'); }); it('renders the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('element is invalid', function () { before(function (done) { rowNode = getNode({ field1: 'value' }); rowNode.data.hadronDocument .get('field1') .setInvalid('invalid', 'String', 'message'); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the element as invalid', function () { const wrapper = component.find('.table-view-cell-is-invalid'); expect(wrapper).to.contain(
invalid
); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('element is empty', function () { before(function (done) { rowNode = getNode({}); value = undefined; component = mount( ); done(); }); it('renders the element as empty', function () { const wrapper = component.find('.table-view-cell-is-empty'); expect(wrapper.text()).to.contain('No field'); }); it('does not render the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.not.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('index of element is out of range', function () { before(function (done) { rowNode = getNode({ array: [1, 2] }); value = undefined; const context2 = getContext(['array']); const column2 = getColumn(4); component = mount( ); done(); }); it('renders the element as uneditable', function () { const wrapper = component.find('.table-view-cell-is-uneditable'); expect(wrapper.text()).to.equal(''); }); it('does not render the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.not.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('parent type of element is incorrect', function () { describe('is array, object expected', function () { before(function (done) { rowNode = getNode({ array: [1, 2] }); value = rowNode.data.hadronDocument.getChild(['array', 1]); const context2 = getContext(['array']); const column2 = getColumn(1); component = mount( ); done(); }); it('renders the element as uneditable', function () { const wrapper = component.find('.table-view-cell-is-uneditable'); expect(wrapper.text()).to.equal(''); }); it('does not render the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.not.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); describe('is object, array expected', function () { before(function (done) { rowNode = getNode({ obj: { field1: 1, field2: 2 } }); value = rowNode.data.hadronDocument.getChild(['obj', 'field1']); const context2 = getContext(['obj']); const column2 = getColumn('field1'); component = mount( ); done(); }); it('renders the element as uneditable', function () { const wrapper = component.find('.table-view-cell-is-uneditable'); expect(wrapper.text()).to.equal(''); }); it('does not render the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.not.be.present(); }); it('does not render the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.not.be.present(); }); }); }); describe('element is expandable', function () { before(function (done) { rowNode = getNode({ field1: { subfield1: 1 } }); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the element correctly', function () { const wrapper = component.find('.table-view-cell'); expect(wrapper.text()).to.contain('{} 1 fields'); }); it('does not render the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.not.be.present(); }); it('renders the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.be.present(); }); }); describe('element is array', function () { before(function (done) { rowNode = getNode({ field1: [1, 2, 3] }); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the element correctly', function () { const wrapper = component.find('.table-view-cell'); expect(wrapper.text()).to.contain('[] 3 elements'); }); }); describe('element is expandable and modified', function () { before(function (done) { rowNode = getNode({ field1: { subfield1: 1 } }); rowNode.data.hadronDocument .getChild(['field1', 'subfield1']) .edit('a new value'); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); done(); }); it('renders the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button-left'); expect(wrapper.find('.fa-rotate-left')).to.be.present(); }); it('renders the expand button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-expand')).to.be.present(); }); }); }); describe('#actions', function () { let component; let rowNode; let value; let api; let actions; const column = getColumn(); const context = getContext([]); describe('undo', function () { describe('clicking undo on an element', function () { before(function (done) { rowNode = getNode({ field1: 'value' }); rowNode.data.hadronDocument.get('field1').edit('a new value'); value = rowNode.data.hadronDocument.get('field1'); api = getApi(); actions = getActions(); component = mount( ); const wrapper = component.find('.table-view-cell-circle-button'); wrapper.simulate('click'); done(); }); it('reverts the element', function () { expect(value.isModified()).to.equal(false); }); it('renders the original element', function () { const wrapper = component.find('.table-view-cell .element-value'); expect( wrapper.matchesElement(
"value"
) ).to.eq(true); }); it('does not render the undo button', function () { const wrapper = component.find('.table-view-cell-circle-button'); expect(wrapper.find('.fa-rotate-left')).to.not.be.present(); }); }); describe('clicking undo on an added element', function () { before(function (done) { rowNode = getNode({}); rowNode.data.hadronDocument.insertEnd('field1', 'value'); value = rowNode.data.hadronDocument.get('field1'); api = getApi(); actions = getActions(); component = mount( ); const wrapper = component.find('.table-view-cell-circle-button'); wrapper.simulate('click'); done(); }); it('calls elementRemoved action', function () { expect(actions.elementRemoved.callCount).to.equal(1); expect( actions.elementRemoved.alwaysCalledWithExactly('field1', '1', false) ).to.equal(true); notCalledExcept(actions, ['elementRemoved']); notCalledExcept(api, []); }); it('renders an empty element', function () { const wrapper = component.find('.table-view-cell-is-empty'); expect(wrapper.text()).to.contain('No field'); }); }); describe('clicking undo on an type changed element', function () { before(function (done) { rowNode = getNode({ field1: 'value' }); rowNode.data.hadronDocument.get('field1').edit(100); value = rowNode.data.hadronDocument.get('field1'); api = getApi(); actions = getActions(); component = mount( ); const wrapper = component.find('.table-view-cell-circle-button'); wrapper.simulate('click'); done(); }); it('calls elementTypeChanged action', function () { expect(actions.elementTypeChanged.callCount).to.equal(1); expect( actions.elementTypeChanged.alwaysCalledWithExactly( 'field1', 'String', '1' ) ).to.equal(true); notCalledExcept(actions, ['elementTypeChanged']); notCalledExcept(api, []); }); it('renders the original value', function () { const wrapper = component.find('.table-view-cell .element-value'); expect( wrapper.matchesElement(
"value"
) ).to.eq(true); }); }); describe('clicking undo on a removed element', function () { before(function (done) { rowNode = getNode({ field1: 'value' }); rowNode.data.hadronDocument.get('field1').remove(); value = rowNode.data.hadronDocument.get('field1'); api = getApi(); actions = getActions(); component = mount( ); const wrapper = component.find('.table-view-cell-circle-button'); wrapper.simulate('click'); done(); }); it('calls elementAdded action', function () { expect(actions.elementAdded.callCount).to.equal(1); expect( actions.elementAdded.alwaysCalledWithExactly( 'field1', 'String', '1' ) ).to.equal(true); notCalledExcept(actions, ['elementAdded']); notCalledExcept(api, []); }); it('renders the original value', function () { const wrapper = component.find('.table-view-cell .element-value'); expect( wrapper.matchesElement(
"value"
) ).to.eq(true); }); }); }); describe('drill down', function () { before(function (done) { api = getApi(); actions = getActions(); rowNode = getNode({ field1: { subfield1: 1 } }); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); const wrapper = component.find('.table-view-cell-circle-button'); wrapper.simulate('click'); done(); }); it('calls drillDown action', function () { expect(actions.drillDown.callCount).to.equal(1); expect( actions.drillDown.alwaysCalledWithExactly( rowNode.data.hadronDocument, value ) ).to.equal(true); notCalledExcept(actions, ['drillDown']); notCalledExcept(api, []); }); }); describe('in non-editing mode', function () { before(function (done) { api = getApi(); actions = getActions(); rowNode = getNode({ field1: 'value' }); value = rowNode.data.hadronDocument.get('field1'); component = mount( ); const wrapper = component.find('.table-view-cell'); wrapper.simulate('click'); done(); }); it('clicking does not start editing', function () { notCalledExcept(actions, []); notCalledExcept(api, []); }); }); describe('in editing mode', function () { before(function (done) { api = getApi(); actions = getActions(); rowNode = getNode({ field1: 'value' }); rowNode.data.state = 'editing'; value = rowNode.data.hadronDocument.get('field1'); component = mount( ); const wrapper = component.find('.table-view-cell'); wrapper.simulate('click'); done(); }); it('clicking starts editing', function () { expect(api.startEditingCell.callCount).to.equal(1); expect( api.startEditingCell.alwaysCalledWithExactly({ rowIndex: 0, colKey: 'field1', }) ); notCalledExcept(actions, []); notCalledExcept(api, ['startEditingCell']); }); }); }); });