spiff-arena/test/spec/UserTaskPropsSpec.js

86 lines
3.3 KiB
JavaScript

import {
bootstrapPropertiesPanel, changeInput,
expectSelected,
findEntry, findGroupEntry, findInput
} from './helpers';
import spiffModdleExtension from '../../app/spiffworkflow/moddle/spiffworkflow.json';
import { BpmnPropertiesPanelModule, BpmnPropertiesProviderModule } from 'bpmn-js-properties-panel';
import { getBusinessObject } from 'bpmn-js/lib/util/ModelUtil';
import TestContainer from 'mocha-test-container-support';
import extensions from '../../app/spiffworkflow/extensions';
describe('Properties Panel for User Tasks', function() {
const user_form_xml = require('./bpmn/user_form.bpmn').default;
const diagram_xml = require('./bpmn/diagram.bpmn').default;
let container;
beforeEach(function() {
container = TestContainer.get(this);
});
function preparePropertiesPanelWithXml(xml) {
return bootstrapPropertiesPanel(xml, {
container,
debounceInput: false,
additionalModules: [
extensions,
BpmnPropertiesPanelModule,
BpmnPropertiesProviderModule,
],
moddleExtensions: {
spiffworkflow: spiffModdleExtension
},
});
}
it('should display a panel for setting the web form properties', async function() {
await preparePropertiesPanelWithXml(user_form_xml)();
// IF - you select a user task
const userTask = await expectSelected('my_user_task');
expect(userTask).to.exist;
// THEN - a property panel exists with a section for editing web forms
let group = findGroupEntry('user_task_properties', container);
expect(group).to.exist;
});
it('should allow you to edit a web form property.', async function() {
await preparePropertiesPanelWithXml(user_form_xml)();
// IF - you select a user task and change the formJsonSchemaFilename text field
const userTask = await expectSelected('my_user_task');
let group = findGroupEntry('user_task_properties', container);
let entry = findEntry('extension_formJsonSchemaFilename', group);
let input = findInput('text', entry);
expect(input).to.exist;
changeInput(input, 'my_filename.json');
// THEN - the input is updated.
let businessObject = getBusinessObject(userTask);
expect(businessObject.extensionElements).to.exist;
let properties = businessObject.extensionElements.values[1];
expect(properties.properties).to.exist;
const property = properties.properties[0];
expect(property.value).to.equal('my_filename.json');
expect(property.name).to.equal('formJsonSchemaFilename');
});
it('should parse the spiffworkflow:properties tag when you open an existing file', async function() {
await preparePropertiesPanelWithXml(diagram_xml)();
// IF - a script tag is selected, and you change the script in the properties panel
await expectSelected('task_confirm');
let group = findGroupEntry('user_task_properties', container);
let formJsonSchemaFilenameEntry = findEntry('extension_formJsonSchemaFilename', group);
let formJsonSchemaFilenameInput = findInput('text', formJsonSchemaFilenameEntry);
expect(formJsonSchemaFilenameInput.value).to.equal('give_me_a_number_form.json');
let formUiSchemaFilenameEntry = findEntry('extension_formUiSchemaFilename', group);
let formUiSchemaFilenameInput = findInput('text', formUiSchemaFilenameEntry);
expect(formUiSchemaFilenameInput.value).to.equal('number_form_schema.json');
});
});