2014-06-11 12:41:55 +00:00
|
|
|
'use strict';
|
|
|
|
|
2014-06-18 09:45:30 +00:00
|
|
|
var Matchers = require('../Matchers'),
|
|
|
|
TestHelper = require('../TestHelper');
|
|
|
|
|
2014-08-05 06:17:22 +00:00
|
|
|
/* global bootstrapViewer, inject */
|
2014-06-18 09:45:30 +00:00
|
|
|
|
|
|
|
|
2014-03-13 15:06:30 +00:00
|
|
|
var fs = require('fs');
|
|
|
|
|
2014-08-01 05:16:59 +00:00
|
|
|
var Viewer = require('../../lib/Viewer');
|
2014-03-13 15:06:30 +00:00
|
|
|
|
|
|
|
|
2014-06-18 09:45:30 +00:00
|
|
|
describe('viewer', function() {
|
2014-03-13 15:06:30 +00:00
|
|
|
|
2014-07-30 14:06:32 +00:00
|
|
|
beforeEach(Matchers.addDeepEquals);
|
2014-03-13 15:06:30 +00:00
|
|
|
|
2014-06-18 09:45:30 +00:00
|
|
|
|
2014-03-13 15:06:30 +00:00
|
|
|
var container;
|
|
|
|
|
|
|
|
beforeEach(function() {
|
2014-06-18 09:45:30 +00:00
|
|
|
container = jasmine.getEnv().getTestContainer();
|
2014-03-13 15:06:30 +00:00
|
|
|
});
|
|
|
|
|
2014-06-18 09:45:30 +00:00
|
|
|
|
2014-06-11 12:41:55 +00:00
|
|
|
function createViewer(xml, done) {
|
2014-08-01 05:55:47 +00:00
|
|
|
var viewer = new Viewer({ container: container });
|
2014-06-11 12:41:55 +00:00
|
|
|
|
2014-08-01 05:55:47 +00:00
|
|
|
viewer.importXML(xml, function(err) {
|
|
|
|
done(err, viewer);
|
2014-06-11 12:41:55 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2014-03-21 20:10:01 +00:00
|
|
|
|
2014-03-13 15:06:30 +00:00
|
|
|
it('should import simple process', function(done) {
|
|
|
|
|
|
|
|
var xml = fs.readFileSync('test/fixtures/bpmn/simple.bpmn', 'utf8');
|
|
|
|
|
2014-06-11 12:41:55 +00:00
|
|
|
createViewer(xml, done);
|
2014-03-13 15:06:30 +00:00
|
|
|
});
|
2014-03-17 10:11:25 +00:00
|
|
|
|
2014-03-21 20:10:01 +00:00
|
|
|
|
2014-03-17 10:11:25 +00:00
|
|
|
it('should import empty definitions', function(done) {
|
|
|
|
|
|
|
|
var xml = fs.readFileSync('test/fixtures/bpmn/empty-definitions.bpmn', 'utf8');
|
|
|
|
|
2014-06-11 12:41:55 +00:00
|
|
|
createViewer(xml, done);
|
2014-03-21 20:10:01 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
2014-04-03 19:20:13 +00:00
|
|
|
describe('error handling', function() {
|
2014-03-21 20:10:01 +00:00
|
|
|
|
2014-05-23 14:31:28 +00:00
|
|
|
it('should handle non-bpmn input', function(done) {
|
2014-03-17 10:11:25 +00:00
|
|
|
|
2014-04-03 19:20:13 +00:00
|
|
|
var xml = 'invalid stuff';
|
|
|
|
|
2014-06-11 12:41:55 +00:00
|
|
|
createViewer(xml, function(err) {
|
2014-04-03 19:20:13 +00:00
|
|
|
|
|
|
|
expect(err).toBeDefined();
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2014-05-23 14:31:28 +00:00
|
|
|
|
|
|
|
it('should handle invalid BPMNPlane#bpmnElement', function(done) {
|
|
|
|
|
|
|
|
var xml = fs.readFileSync('test/fixtures/bpmn/error/di-plane-no-bpmn-element.bpmn', 'utf8');
|
|
|
|
|
2014-06-11 12:41:55 +00:00
|
|
|
createViewer(xml, function(err) {
|
2014-05-23 14:31:28 +00:00
|
|
|
expect(err).toBeDefined();
|
|
|
|
expect(err.message).toEqual('no rootElement referenced in BPMNPlane <BPMNPlane_1>');
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2014-06-30 17:04:40 +00:00
|
|
|
|
|
|
|
it('should handle missing namespace', function(done) {
|
|
|
|
|
|
|
|
var xml = fs.readFileSync('test/fixtures/bpmn/error/missing-namespace.bpmn', 'utf8');
|
|
|
|
|
|
|
|
createViewer(xml, function(err) {
|
|
|
|
expect(err).toBeDefined();
|
|
|
|
expect(err.message).toEqual(
|
|
|
|
'unparsable content <collaboration> detected; this may indicate an invalid BPMN 2.0 diagram file\n' +
|
|
|
|
'\tline: 2\n' +
|
|
|
|
'\tcolumn: 29\n' +
|
|
|
|
'\tnested error: unrecognized element <collaboration>');
|
|
|
|
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2014-04-03 19:20:13 +00:00
|
|
|
});
|
2014-03-21 20:10:01 +00:00
|
|
|
|
|
|
|
|
2014-06-17 09:19:31 +00:00
|
|
|
describe('dependency injection', function() {
|
|
|
|
|
|
|
|
it('should be available via di as <bpmnjs>', function(done) {
|
|
|
|
|
|
|
|
var xml = fs.readFileSync('test/fixtures/bpmn/simple.bpmn', 'utf8');
|
|
|
|
|
|
|
|
createViewer(xml, function(err, viewer) {
|
|
|
|
|
|
|
|
expect(viewer.get('bpmnjs')).toBe(viewer);
|
|
|
|
|
|
|
|
done(err);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
2014-04-03 19:20:13 +00:00
|
|
|
describe('export', function() {
|
2014-03-21 20:10:01 +00:00
|
|
|
|
2014-04-03 19:20:13 +00:00
|
|
|
it('should export svg', function(done) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var xml = fs.readFileSync('test/fixtures/bpmn/empty-definitions.bpmn', 'utf8');
|
|
|
|
|
2014-08-01 05:55:47 +00:00
|
|
|
createViewer(xml, function(err, viewer) {
|
2014-04-03 19:20:13 +00:00
|
|
|
|
|
|
|
if (err) {
|
|
|
|
return done(err);
|
|
|
|
}
|
|
|
|
|
|
|
|
// when
|
2014-08-01 05:55:47 +00:00
|
|
|
viewer.saveSVG(function(err, svg) {
|
2014-04-03 19:20:13 +00:00
|
|
|
|
|
|
|
if (err) {
|
|
|
|
return done(err);
|
|
|
|
}
|
|
|
|
|
|
|
|
var expectedStart = '<?xml version="1.0" encoding="utf-8"?>';
|
|
|
|
var expectedEnd = '</svg>';
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(svg.indexOf(expectedStart)).toEqual(0);
|
|
|
|
expect(svg.indexOf(expectedEnd)).toEqual(svg.length - expectedEnd.length);
|
|
|
|
|
2014-05-23 08:58:44 +00:00
|
|
|
// ensure correct rendering of SVG contents
|
|
|
|
expect(svg.indexOf('undefined')).toBe(-1);
|
|
|
|
|
2014-05-28 10:19:35 +00:00
|
|
|
// expect header to be written only once
|
|
|
|
expect(svg.indexOf('<svg width="100%" height="100%">')).toBe(-1);
|
2014-06-23 15:16:13 +00:00
|
|
|
expect(svg.indexOf('<g class="viewport"')).toBe(-1);
|
2014-05-28 10:19:35 +00:00
|
|
|
|
2014-04-03 19:20:13 +00:00
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
2014-03-17 10:11:25 +00:00
|
|
|
});
|
2014-04-03 19:20:13 +00:00
|
|
|
|
2014-03-17 10:11:25 +00:00
|
|
|
});
|
2014-03-21 20:10:01 +00:00
|
|
|
|
2014-08-01 05:55:47 +00:00
|
|
|
describe('configuration', function() {
|
|
|
|
|
|
|
|
var testModules = [
|
|
|
|
{ logger: [ 'type', function() { this.called = true; } ] }
|
|
|
|
];
|
|
|
|
|
|
|
|
// given
|
|
|
|
var xml = fs.readFileSync('test/fixtures/bpmn/empty-definitions.bpmn', 'utf8');
|
|
|
|
|
|
|
|
|
|
|
|
it('should override default modules', function(done) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var viewer = new Viewer({ container: container, modules: testModules });
|
|
|
|
|
|
|
|
// when
|
|
|
|
viewer.importXML(xml, function(err) {
|
|
|
|
|
|
|
|
// then
|
|
|
|
expect(err.message).toBe('No provider for "bpmnImporter"! (Resolving: bpmnImporter)');
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
it('should add module to default modules', function(done) {
|
|
|
|
|
|
|
|
// given
|
|
|
|
var viewer = new Viewer({ container: container, additionalModules: testModules });
|
|
|
|
|
|
|
|
// when
|
|
|
|
viewer.importXML(xml, function(err) {
|
|
|
|
|
|
|
|
// then
|
|
|
|
var logger = viewer.get('logger');
|
|
|
|
expect(logger.called).toBe(true);
|
|
|
|
|
|
|
|
done(err);
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
2014-03-13 15:06:30 +00:00
|
|
|
});
|