UNPKG

formiojs

Version:

Common js library for client side interaction with <form.io>

228 lines (163 loc) • 8.36 kB
"use strict"; var _powerAssert = _interopRequireDefault(require("power-assert")); var _nativePromiseOnly = _interopRequireDefault(require("native-promise-only")); var _harness = _interopRequireDefault(require("../test/harness")); var _WebformBuilder = _interopRequireDefault(require("./WebformBuilder")); var _builders = _interopRequireDefault(require("../lib/builders")); var _formtest = require("../test/formtest"); var _sameApiKeysLayoutComps = _interopRequireDefault(require("../test/forms/sameApiKeysLayoutComps")); var _testApiKeysUniquifying = _interopRequireDefault(require("../test/forms/testApiKeysUniquifying")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('WebformBuilder tests', function () { this.retries(3); before(function (done) { return _harness.default.builderBefore(done); }); afterEach(function () { return _harness.default.getBuilder().setForm({ display: 'form', components: [] }); }); after(function (done) { return _harness.default.builderAfter(done); }); it('Should create a new form builder class', function (done) { var builder = _harness.default.getBuilder(); (0, _powerAssert.default)(builder instanceof _WebformBuilder.default, 'Builder must be an instance of FormioFormBuilder'); done(); }); it('Should not show unique API error when components with same keys are inside and outside of the Data component', function (done) { var builder = _harness.default.getBuilder(); builder.webform.setForm(_formtest.uniqueApiKeys).then(function () { builder.highlightInvalidComponents(); var component = builder.webform.getComponent(['textField']); _powerAssert.default.equal(component.errors.length, 0); done(); }).catch(done); }); it('Should show unique API error when components inside and outside of the Layout component have same keys', function (done) { var builder = _harness.default.getBuilder(); builder.webform.setForm(_formtest.uniqueApiKeysLayout).then(function () { builder.highlightInvalidComponents(); var component = builder.webform.getComponent(['textField']); _powerAssert.default.equal(component.errors.length, 1); done(); }).catch(done); }); it('Should show unique API error when layout components have same keys', function (done) { var builder = _harness.default.getBuilder(); builder.webform.setForm(_sameApiKeysLayoutComps.default).then(function () { builder.highlightInvalidComponents(); var component = builder.webform.getComponent(['tabs']); _powerAssert.default.equal(component.errors.length, 1, 'Should show Unique API Key error'); done(); }).catch(done); }); it('Should allow add components', function (done) { var builder = _harness.default.getBuilder(); builder.setForm(_formtest.columnsForm).then(function () { var column1 = builder.webform.element.querySelector('[ref="columns-container"]'); _harness.default.buildComponent('textfield', column1); setTimeout(function () { _harness.default.saveComponent(); setTimeout(function () { var columns = builder.webform.getComponent('columns'); _powerAssert.default.equal(columns.columns[0].length, 1); done(); }, 150); }, 150); }).catch(done); }); it('Should show unique API error when components on the same level have same keys', function (done) { var builder = _harness.default.getBuilder(); builder.webform.setForm(_formtest.uniqueApiKeysSameLevel).then(function () { builder.highlightInvalidComponents(); var component = builder.webform.getComponent(['textField']); _powerAssert.default.equal(component.errors.length, 1); done(); }).catch(done); }); it('Should uniquify API keys when add a component to the container which already has the same type component', function (done) { var builder = _harness.default.getBuilder(); builder.webform.setForm(_testApiKeysUniquifying.default).then(function () { var ERROR_MSG = 'Should add a number to the api key of the second component of the same type'; var containerTestsReady; var containerTestsPromise = new _nativePromiseOnly.default(function (resolve) { return containerTestsReady = resolve; }); var container = builder.webform.element.querySelector(['[ref="container-container"]']); _harness.default.buildComponent('editgrid', container); setTimeout(function () { var newEditGridApiKey = builder.editForm.getComponent('key'); _powerAssert.default.equal(newEditGridApiKey.dataValue, 'editGrid1', ERROR_MSG); _harness.default.saveComponent(); setTimeout(function () { var editGridInsideContainer = container.querySelector('[ref="editGrid-container"]'); _harness.default.buildComponent('columns', editGridInsideContainer); setTimeout(function () { var newColumnsApiKey = builder.editForm.getComponent('key'); _powerAssert.default.equal(newColumnsApiKey.dataValue, 'columns1', ERROR_MSG); _harness.default.saveComponent(); setTimeout(function () { var columnInsideEditGridInsideContainer = editGridInsideContainer.querySelector('[ref="columns-container"]'); _harness.default.buildComponent('textfield', columnInsideEditGridInsideContainer); setTimeout(function () { var newTextFieldApiKey = builder.editForm.getComponent('key'); _powerAssert.default.equal(newTextFieldApiKey.dataValue, 'textField1', ERROR_MSG); _harness.default.saveComponent(); containerTestsReady(); }, 150); }, 150); }, 150); }, 150); }, 150); containerTestsPromise.then(function () { var panel = builder.webform.element.querySelector(['[ref="panel-container"]']); _harness.default.buildComponent('datagrid', panel); setTimeout(function () { var newDataGridApiKey = builder.editForm.getComponent('key'); _powerAssert.default.equal(newDataGridApiKey.dataValue, 'dataGrid1', ERROR_MSG); _harness.default.saveComponent(); setTimeout(function () { var dataGridInsidePanel = panel.querySelector('[ref="dataGrid-container"]'); _harness.default.buildComponent('number', dataGridInsidePanel); setTimeout(function () { var newNumberApiKey = builder.editForm.getComponent('key'); _powerAssert.default.equal(newNumberApiKey.dataValue, 'number1', ERROR_MSG); _harness.default.saveComponent(); setTimeout(function () { var columnInsidefieldSetInsideDataGridInsidePanel = dataGridInsidePanel.parentElement.querySelectorAll('[ref="columns-container"]')[1]; _harness.default.buildComponent('checkbox', columnInsidefieldSetInsideDataGridInsidePanel); setTimeout(function () { var newTextFieldApiKey = builder.editForm.getComponent('key'); _powerAssert.default.equal(newTextFieldApiKey.dataValue, 'checkbox1', ERROR_MSG); done(); }, 150); }, 150); }, 150); }, 150); }, 150); }); }).catch(done); }); it('Should override the way a key for new component is set', function (done) { var builder = _harness.default.getBuilder(); builder.setForm(_formtest.columnsForm).then(function () { _builders.default.builders.webform.prototype.updateComponentKey = function () { return 'rewrittenNumberKey'; }; var column = builder.webform.element.querySelector('[ref="columns-container"]'); _harness.default.buildComponent('number', column); setTimeout(function () { var numberLabel = builder.editForm.getComponent('label'); numberLabel.setValue('Test Number'); setTimeout(function () { var numberKey = builder.editForm.getComponent('key'); _powerAssert.default.equal(numberKey.dataValue, 'rewrittenNumberKey'); done(); }, 150); }, 150); }).catch(done); }); });