fix(util): ensure ModelUtil#is never fails
This commit is contained in:
parent
0c8e2f6b18
commit
d5dc43ef32
|
@ -11,7 +11,7 @@
|
||||||
function is(element, type) {
|
function is(element, type) {
|
||||||
var bo = getBusinessObject(element);
|
var bo = getBusinessObject(element);
|
||||||
|
|
||||||
return bo && bo.$instanceOf(type);
|
return bo && (typeof bo.$instanceOf === 'function') && bo.$instanceOf(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.is = is;
|
module.exports.is = is;
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
require('../../TestHelper');
|
||||||
|
|
||||||
|
/* global bootstrapModeler, inject */
|
||||||
|
|
||||||
|
var coreModule = require('../../../lib/core'),
|
||||||
|
modelingModule = require('../../../lib/features/modeling');
|
||||||
|
|
||||||
|
var ModelUtil = require('../../../lib/util/ModelUtil');
|
||||||
|
|
||||||
|
|
||||||
|
describe('ModelUtil', function() {
|
||||||
|
|
||||||
|
var diagramXML = require('../../fixtures/bpmn/empty-definitions.bpmn');
|
||||||
|
|
||||||
|
beforeEach(bootstrapModeler(diagramXML, { modules: [ coreModule, modelingModule ] }));
|
||||||
|
|
||||||
|
|
||||||
|
it('should work with diagram element', inject(function(elementFactory) {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var messageFlowConnection = elementFactory.createConnection({ type: 'bpmn:MessageFlow' });
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(ModelUtil.is(messageFlowConnection, 'bpmn:MessageFlow')).to.be.true;
|
||||||
|
expect(ModelUtil.is(messageFlowConnection, 'bpmn:BaseElement')).to.be.true;
|
||||||
|
|
||||||
|
expect(ModelUtil.is(messageFlowConnection, 'bpmn:SequenceFlow')).to.be.false;
|
||||||
|
expect(ModelUtil.is(messageFlowConnection, 'bpmn:Task')).to.be.false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
it('should work with business object', inject(function(bpmnFactory) {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var gateway = bpmnFactory.create('bpmn:Gateway');
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(ModelUtil.is(gateway, 'bpmn:Gateway')).to.be.true;
|
||||||
|
expect(ModelUtil.is(gateway, 'bpmn:BaseElement')).to.be.true;
|
||||||
|
|
||||||
|
expect(ModelUtil.is(gateway, 'bpmn:SequenceFlow')).to.be.false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
it('should work with untyped business object', inject(function() {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var foo = { businessObject: 'BAR' };
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(ModelUtil.is(foo, 'FOO')).to.be.false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
it('should work with untyped diagram element', inject(function() {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var foo = { };
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(ModelUtil.is(foo, 'FOO')).to.be.false;
|
||||||
|
}));
|
||||||
|
|
||||||
|
});
|
Loading…
Reference in New Issue