bpmn-js-spiffworkflow/test/spec/DataObjectPropsSpec.js

92 lines
3.4 KiB
JavaScript

import {
bootstrapPropertiesPanel, changeInput,
expectSelected,
findEntry, findInput, findSelect,
} from './helpers';
import { BpmnPropertiesPanelModule, BpmnPropertiesProviderModule } from 'bpmn-js-properties-panel';
import spiffModdleExtension from '../../app/spiffworkflow/moddle/spiffworkflow.json';
import TestContainer from 'mocha-test-container-support';
import DataObject from '../../app/spiffworkflow/DataObject';
describe('Properties Panel for Data Objects', function() {
let xml = require('./bpmn/diagram.bpmn').default;
let container;
beforeEach(function() {
container = TestContainer.get(this);
});
beforeEach(bootstrapPropertiesPanel(xml, {
container,
debounceInput: false,
additionalModules: [
DataObject,
BpmnPropertiesPanelModule,
BpmnPropertiesProviderModule,
],
moddleExtensions: {
spiffworkflow: spiffModdleExtension
},
}));
it('should allow you to see a list of data objects', async function() {
// IF - a data object reference is selected
let my_data_ref_1 = await expectSelected('my_data_ref_1');
expect(my_data_ref_1).to.exist;
// THEN - a select Data Object section should appear in the properties panel
let entry = findEntry('selectDataObject', container);
expect(entry).to.exist;
// AND - That that properties' pane selection should contain a dropdown with a value in it.
let selector = findSelect(entry);
expect(selector).to.exist;
expect(selector.length).to.equal(3);
});
it('selecting a different data object should change the data model.', async function() {
// IF - a data object reference is selected
let my_data_ref_1 = await expectSelected('my_data_ref_1');
let entry = findEntry('selectDataObject', container);
let selector = findSelect(entry);
let businessObject = my_data_ref_1.businessObject;
// AND we select a dataObjectReference (we know it has this value, because we created the bpmn file)
changeInput(selector, 'my_third_data_object');
// then this data reference object now references that data object.
expect(businessObject.get('dataObjectRef').id).to.equal('my_third_data_object');
});
it('renaming a data object, changes to the label of references', async function() {
// IF - a process is selected, and the name of a data object is changed.
let entry = findEntry('ProcessTest-dataObj-2-id', container);
let textInput = findInput('text', entry);
changeInput(textInput, 'my_nifty_new_name');
let my_data_ref_1 = await expectSelected('my_data_ref_1');
// THEN - both the data object itself, and the label of any references are updated.
expect(my_data_ref_1.businessObject.dataObjectRef.id).to.equal('my_nifty_new_name');
expect(my_data_ref_1.businessObject.name).to.equal('My Nifty New Name');
});
it('renaming a data object creates a lable without losing the numbers', async function() {
// IF - a process is selected, and the name of a data object is changed.
let entry = findEntry('ProcessTest-dataObj-2-id', container);
let textInput = findInput('text', entry);
changeInput(textInput, 'MyObject1');
let my_data_ref_1 = await expectSelected('my_data_ref_1');
// THEN - both the data object itself, and the label of any references are updated.
expect(my_data_ref_1.businessObject.dataObjectRef.id).to.equal('MyObject1');
expect(my_data_ref_1.businessObject.name).to.equal('My Object 1');
});
});