import { ClassicEditor, Paragraph, _setModelData as setModelData, _getModelData as getModelData } from 'ckeditor5';
import { afterEach, beforeEach, describe, it } from 'vitest';
import MermaidEditing from '../../dist/mermaidediting';
import InsertMermaidCommand from '../../dist/commands/insertMermaidCommand';
import { expect } from 'vitest';
/* global document */
describe( 'InsertMermaidCommand', () => {
let domElement, editor, model, command;
beforeEach( async () => {
domElement = document.createElement( 'div' );
document.body.appendChild( domElement );
editor = await ClassicEditor.create( domElement, {
licenseKey: "GPL",
plugins: [
MermaidEditing,
Paragraph
]
} );
model = editor.model;
command = new InsertMermaidCommand( editor );
} );
afterEach( () => {
domElement.remove();
return editor.destroy();
} );
describe( '#isEnabled', () => {
describe( 'should be false', () => {
it( 'when selection is inside mermaid', () => {
setModelData( model,
'foo' +
'[]'
);
expect( command.isEnabled ).to.be.false;
} );
it( 'when mermaid is selected', () => {
setModelData( model,
'foo' +
'[]'
);
expect( command.isEnabled ).to.be.false;
} );
} );
describe( 'should be true', () => {
it( 'when text is selected', () => {
setModelData( model,
'[foo]' +
''
);
expect( command.isEnabled ).to.be.true;
} );
it( 'when mermaid is part of the selection', () => {
setModelData( model,
'[foo' +
'' +
'b]az'
);
expect( command.isEnabled ).to.be.true;
} );
} );
} );
describe( 'execute()', () => {
it( 'should add sample mermaid', () => {
setModelData( model,
'[foo]'
);
command.execute();
expect( getModelData( model, { withoutSelection: true } ) ).to.equal(
''
);
} );
} );
} );