You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.3 KiB
107 lines
3.3 KiB
"use strict";
|
|
|
|
var _chai = require("chai");
|
|
|
|
var _factoryGirl = _interopRequireDefault(require("factory-girl"));
|
|
|
|
var _actionsToButtonGroup = require("./actions-to-button-group");
|
|
|
|
require("../../spec/action-json.factory");
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
describe('actionsToButtonGroup', () => {
|
|
let actions;
|
|
const actionsCount = 5;
|
|
const params = {
|
|
recordId: 'recordId',
|
|
resourceId: 'resourceId',
|
|
recordsId: ['recordId']
|
|
};
|
|
let buttonGroupProps;
|
|
|
|
const handleClick = () => true;
|
|
|
|
context('flat actions (no nesting)', () => {
|
|
beforeEach(async () => {
|
|
actions = await _factoryGirl.default.buildMany('ActionJSON', actionsCount, {
|
|
actionType: 'record'
|
|
});
|
|
buttonGroupProps = (0, _actionsToButtonGroup.actionsToButtonGroup)({
|
|
actions,
|
|
params,
|
|
handleClick
|
|
});
|
|
});
|
|
it('returns all buttons', () => {
|
|
(0, _chai.expect)(buttonGroupProps.length).to.eq(actionsCount);
|
|
});
|
|
});
|
|
context('nested actions', () => {
|
|
let rootActions;
|
|
let actionsPublish;
|
|
let actionsExport;
|
|
beforeEach(async () => {
|
|
rootActions = {
|
|
normal: await _factoryGirl.default.build('ActionJSON', {
|
|
actionType: 'record'
|
|
}),
|
|
publish: await _factoryGirl.default.build('ActionJSON', {
|
|
actionType: 'record',
|
|
name: 'publish'
|
|
}),
|
|
export: await _factoryGirl.default.build('ActionJSON', {
|
|
actionType: 'record',
|
|
name: 'publish'
|
|
})
|
|
};
|
|
actionsPublish = await _factoryGirl.default.buildMany('ActionJSON', actionsCount, {
|
|
actionType: 'record',
|
|
parent: 'publish'
|
|
});
|
|
actionsExport = await _factoryGirl.default.buildMany('ActionJSON', actionsCount, {
|
|
actionType: 'record',
|
|
parent: 'export'
|
|
});
|
|
buttonGroupProps = (0, _actionsToButtonGroup.actionsToButtonGroup)({
|
|
actions: [...Object.values(rootActions), ...actionsPublish, ...actionsExport],
|
|
params,
|
|
handleClick
|
|
});
|
|
});
|
|
it('returns 3 root buttons', () => {
|
|
(0, _chai.expect)(buttonGroupProps.length).to.eq(3);
|
|
});
|
|
it('returns 5 buttons for each nested action', () => {
|
|
const publishButton = buttonGroupProps[1];
|
|
const exportButton = buttonGroupProps[2];
|
|
(0, _chai.expect)(publishButton.buttons).to.have.lengthOf(actionsCount);
|
|
(0, _chai.expect)(exportButton.buttons).to.have.lengthOf(actionsCount);
|
|
});
|
|
});
|
|
context('action with not existing parent', () => {
|
|
const parent = 'newParent';
|
|
beforeEach(async () => {
|
|
actions = [await _factoryGirl.default.build('ActionJSON', {
|
|
actionType: 'record',
|
|
parent
|
|
})];
|
|
buttonGroupProps = (0, _actionsToButtonGroup.actionsToButtonGroup)({
|
|
actions,
|
|
params,
|
|
handleClick
|
|
});
|
|
});
|
|
it('returns just one root action', () => {
|
|
(0, _chai.expect)(buttonGroupProps).to.have.lengthOf(1);
|
|
});
|
|
it('creates button for not existing parent', async () => {
|
|
const parentButton = buttonGroupProps[0];
|
|
(0, _chai.expect)(parentButton.label).to.equal(parent);
|
|
});
|
|
it('nests remaining action under parent', () => {
|
|
const parentButton = buttonGroupProps[0];
|
|
(0, _chai.expect)(parentButton.buttons).to.have.lengthOf(1);
|
|
});
|
|
});
|
|
}); |