SequenceDiagram/scripts/interface/Interface_spec.js

59 lines
1.5 KiB
JavaScript

defineDescribe('Interface', ['./Interface'], (Interface) => {
'use strict';
let parser = null;
let generator = null;
let renderer = null;
let container = null;
let ui = null;
beforeEach(() => {
parser = jasmine.createSpyObj('parser', [
'parse',
'getCodeMirrorMode',
'getCodeMirrorHints',
]);
parser.parse.and.returnValue({
meta: {},
stages: [],
});
generator = jasmine.createSpyObj('generator', ['generate']);
generator.generate.and.returnValue({
meta: {},
agents: [],
stages: [],
});
renderer = jasmine.createSpyObj('renderer', ['render', 'svg']);
renderer.svg.and.returnValue(document.createElement('svg'));
container = jasmine.createSpyObj('container', ['appendChild']);
ui = new Interface({
parser,
generator,
renderer,
defaultCode: 'my default code',
});
});
describe('build', () => {
it('adds elements to the given container', () => {
ui.build(container);
expect(container.appendChild).toHaveBeenCalled();
});
it('creates a code mirror instance with the given code', () => {
ui.build(container);
const constructorArgs = ui.code.constructor;
expect(constructorArgs.options.value).toEqual('my default code');
});
});
describe('download SVG', () => {
it('triggers a download of the current image in SVG format', () => {
ui.build(container);
expect(ui.downloadSVG.getAttribute('href')).toEqual('#');
ui.downloadSVG.dispatchEvent(new Event('click'));
expect(ui.downloadSVG.getAttribute('href')).not.toEqual('#');
});
});
});