'use strict'; var Matchers = require('../Matchers'), TestHelper = require('../TestHelper'); var fs = require('fs'); var Modeler = require('../../lib/Modeler'); describe('Modeler', function() { beforeEach(Matchers.addDeepEquals); var container; beforeEach(function() { container = jasmine.getEnv().getTestContainer(); }); function createModeler(xml, done) { var modeler = new Modeler({ container: container }); modeler.importXML(xml, function(err) { done(err, modeler); }); } it('should import simple process', function(done) { var xml = fs.readFileSync('test/fixtures/bpmn/simple.bpmn', 'utf8'); createModeler(xml, done); }); it('should import empty definitions', function(done) { var xml = fs.readFileSync('test/fixtures/bpmn/empty-definitions.bpmn', 'utf8'); createModeler(xml, done); }); describe('overlay support', function() { it('should allow to add overlays', function(done) { var xml = fs.readFileSync('test/fixtures/bpmn/simple.bpmn', 'utf8'); createModeler(xml, function(err, viewer) { // given var overlays = viewer.get('overlays'), elementRegistry = viewer.get('elementRegistry'); // assume expect(overlays).toBeDefined(); expect(elementRegistry).toBeDefined(); // when overlays.add('SubProcess_1', 'badge', { position: { bottom: 0, right: 0 }, html: '
YUP GREAT STUFF!
' }); overlays.add('StartEvent_1', 'badge', { position: { top: 0, left: 0 }, html: '
YUP GREAT STUFF!
' }); // then expect(overlays.get({ element: 'SubProcess_1', type: 'badge' }).length).toBe(1); expect(overlays.get({ element: 'StartEvent_1', type: 'badge' }).length).toBe(1); done(err); }); }); }); describe('cli support', function() { it('should ship with cli', function(done) { var xml = fs.readFileSync('test/fixtures/bpmn/simple.bpmn', 'utf8'); createModeler(xml, function(err, viewer) { // given var cli = viewer.get('cli'); // assume expect(cli).toBeDefined(); // when var subProcessShape = cli.element('SubProcess_1'); // then expect(subProcessShape.id).toEqual('SubProcess_1'); done(err); }); }); }); it('should handle errors', function(done) { var xml = 'invalid stuff'; var modeler = new Modeler({ container: container }); modeler.importXML(xml, function(err) { expect(err).toBeDefined(); done(); }); }); it('should create new diagram', function(done) { var modeler = new Modeler({ container: container }); modeler.createDiagram(done); }); describe('dependency injection', function() { it('should be available via di as ', function(done) { var xml = fs.readFileSync('test/fixtures/bpmn/simple.bpmn', 'utf8'); createModeler(xml, function(err, modeler) { expect(modeler.get('bpmnjs')).toBe(modeler); done(err); }); }); }); });