import React from 'react';
import { mount } from 'enzyme';
import { expect } from 'chai';
import sinon from 'sinon';
import {
getNode,
getApi,
getContext,
notCalledExcept,
} from '../../../test/aggrid-helper';
import RowActionsRenderer from './row-actions-renderer';
describe('', function () {
const api = getApi();
let component;
let rowNode;
let value;
let context;
let data;
describe('#render', function () {
describe('top-level', function () {
before(function (done) {
rowNode = getNode({ field1: 'value' });
value = rowNode.data.hadronDocument.get('field1');
component = mount(
);
done();
});
it('renders the edit button', function () {
const wrapper = component.find('.table-view-row-actions');
expect(wrapper.find({ title: 'Edit Document' })).to.be.present();
});
it('renders the copy to JSON button', function () {
const wrapper = component.find('.table-view-row-actions');
expect(wrapper.find({ title: 'Copy Document' })).to.be.present();
});
it('renders the clone document button', function () {
const wrapper = component.find('.table-view-row-actions');
expect(wrapper.find({ title: 'Clone Document' })).to.be.present();
});
it('renders the delete document button', function () {
const wrapper = component.find('.table-view-row-actions');
expect(wrapper.find({ title: 'Delete Document' })).to.be.present();
});
});
describe('nested', function () {
before(function (done) {
rowNode = getNode({ field1: 'value' });
value = rowNode.data.hadronDocument.get('field1');
component = mount(
);
done();
});
it('renders the edit button', function () {
const wrapper = component.find('.table-view-row-actions');
expect(wrapper.find({ title: 'Edit Document' })).to.be.present();
});
it('does not render other buttons', function () {
const wrapper = component.find('.table-view-row-actions');
expect(wrapper.find({ title: 'Copy row' })).not.to.be.present();
expect(wrapper.find({ title: 'Clone row' })).not.to.be.present();
expect(wrapper.find({ title: 'Delete row' })).not.to.be.present();
});
});
describe('when the distribution is readonly', function () {
before(function () {
rowNode = getNode({ field1: 'value' });
value = rowNode.data.hadronDocument.get('field1');
component = mount(
);
});
it('does not render the buttons', function () {
const wrapper = component.find('.table-view-row-actions');
expect(
wrapper.find('button[title="Edit Document"]')
).not.to.be.present();
expect(wrapper.find('button[title="Copy row"]')).not.to.be.present();
expect(wrapper.find('button[title="Clone row"]')).not.to.be.present();
expect(wrapper.find('button[title="Delete row"]')).not.to.be.present();
});
});
});
describe('#actions', function () {
describe('top-level', function () {
describe('click the edit button', function () {
before(function (done) {
rowNode = getNode({ field1: 'value' });
data = rowNode.data;
value = rowNode.data.hadronDocument.get('field1');
context = getContext();
component = mount(
);
const wrapper = component.find('button[title="Edit Document"]');
wrapper.simulate('click');
done();
});
it('calls context.addFooter with editing', function () {
expect(context.addFooter.callCount).to.equal(1);
expect(
context.addFooter.alwaysCalledWithExactly(
rowNode,
rowNode.data,
'editing'
)
).to.equal(true);
});
it('does not call anything else on context', function () {
notCalledExcept(context, ['addFooter']);
});
});
describe('click the clone document button', function () {
before(function (done) {
rowNode = getNode({ field1: 'value' });
data = rowNode.data;
value = rowNode.data.hadronDocument.get('field1');
context = getContext();
component = mount(
);
const wrapper = component.find('button[title="Clone Document"]');
wrapper.simulate('click');
done();
});
it('calls context.handleClone', function () {
expect(context.handleClone.callCount).to.equal(1);
expect(context.handleClone.alwaysCalledWithExactly(data)).to.equal(
true
);
});
it('does not call anything else on context', function () {
notCalledExcept(context, ['handleClone']);
});
});
describe('click the delete document button', function () {
before(function (done) {
rowNode = getNode({ field1: 'value' });
data = rowNode.data;
value = rowNode.data.hadronDocument.get('field1');
context = getContext();
component = mount(
);
const wrapper = component.find('button[title="Delete Document"]');
wrapper.simulate('click');
done();
});
it('calls context.addFooter with deleting', function () {
expect(context.addFooter.callCount).to.equal(1);
expect(
context.addFooter.alwaysCalledWithExactly(
rowNode,
rowNode.data,
'deleting'
)
).to.equal(true);
});
it('does not call anything else on context', function () {
notCalledExcept(context, ['addFooter']);
});
});
});
describe('nested', function () {
describe('click edit', function () {
before(function (done) {
rowNode = getNode({ field1: 'value' });
data = rowNode.data;
value = rowNode.data.hadronDocument.get('field1');
context = getContext();
component = mount(
);
const wrapper = component.find('button');
wrapper.simulate('click');
done();
});
it('calls context.addFooter with editing', function () {
expect(context.addFooter.callCount).to.equal(1);
expect(
context.addFooter.alwaysCalledWithExactly(
rowNode,
rowNode.data,
'editing'
)
).to.equal(true);
});
it('does not call anything else on context', function () {
notCalledExcept(context, ['addFooter']);
});
});
});
});
});