import { after, afterEach, before, describe, it } from '@ephox/bedrock-client'; import { Arr } from '@ephox/katamari'; import { assert } from 'chai'; import 'tinymce'; import Editor from 'tinymce/core/api/Editor'; import EditorManager from 'tinymce/core/api/EditorManager'; import Theme from 'tinymce/themes/silver/Theme'; import * as ViewBlock from '../module/test/ViewBlock'; describe('browser.tinymce.core.EditorManagerCommandsTest', () => { const viewBlock = ViewBlock.bddSetup(); before(() => { Theme(); EditorManager._setBaseUrl('/project/tinymce/js/tinymce'); }); after(() => { EditorManager.remove(); }); afterEach((done) => { setTimeout(() => { EditorManager.remove(); done(); }, 0); }); Arr.each([ { label: 'index', value: 0 }, { label: 'id', value: 'ed_1' }, { label: 'object with index', value: { index: 0 }}, { label: 'object with id', value: { id: 'ed_1' }} ], (test) => { it(`mceToggleEditor (${test.label})`, (done) => { viewBlock.update(''); EditorManager.init({ selector: 'textarea.tinymce', init_instance_callback: (editor1) => { assert.isFalse(editor1.isHidden(), 'editor should be visible'); EditorManager.execCommand('mceToggleEditor', false, test.value); assert.isTrue(editor1.isHidden(), 'editor should be hidden'); EditorManager.execCommand('mceToggleEditor', false, test.value); assert.isFalse(editor1.isHidden(), 'editor should be visible'); done(); } }); }); it(`mceRemoveEditor (${test.label})`, (done) => { viewBlock.update(''); EditorManager.init({ selector: 'textarea.tinymce', init_instance_callback: (_editor1) => { assert.lengthOf(EditorManager.get(), 1); EditorManager.execCommand('mceRemoveEditor', false, test.value); assert.lengthOf(EditorManager.get(), 0); done(); } }); }); }); it('mceAddEditor', (done) => { viewBlock.update(''); EditorManager.init({ selector: 'textarea#ed_1', init_instance_callback: (_editor1) => { assert.lengthOf(EditorManager.get(), 1); assert.isFalse(EditorManager.get('ed_1')?.mode.isReadOnly()); EditorManager.execCommand('mceAddEditor', false, { id: 'ed_2', options: { readonly: true, init_instance_callback: (editor2: Editor) => { assert.lengthOf(EditorManager.get(), 2); assert.isTrue(editor2.mode.isReadOnly()); done(); } } }); } }); }); });