import { Chain, Logger, Pipeline, RawAssertions } from '@ephox/agar'; import { UnitTest } from '@ephox/bedrock'; import { Editor as McEditor } from '@ephox/mcagar'; import { Editor } from 'tinymce/core/api/Editor'; import EditorManager from 'tinymce/core/api/EditorManager'; import Theme from 'tinymce/themes/modern/Theme'; UnitTest.asynctest('browser.tinymce.core.EditorRemoveTest', (success, failure) => { Theme(); const settings = { skin_url: '/project/js/tinymce/skins/lightgray' }; const cAssertTextareaDisplayStyle = (expected) => Chain.op((editor) => { const textareaElement = editor.getElement(); RawAssertions.assertEq('element does not have the expected style', expected, textareaElement.style.display); }); const cCreateEditor = Chain.on((_, next, die) => next(Chain.wrap(new Editor('editor', {}, EditorManager)))); const cRemoveEditor = Chain.op((editor) => editor.remove()); Pipeline.async({}, [ Logger.t('remove editor without initializing it', Chain.asStep({}, [ cCreateEditor, cRemoveEditor, ])), Logger.t('remove editor where the body has been removed', Chain.asStep({}, [ McEditor.cFromHtml('', settings), Chain.mapper((value) => { const body = value.getBody(); body.parentNode.removeChild(body); return value; }), McEditor.cRemove ])), Logger.t('init editor with no display style', Chain.asStep({}, [ McEditor.cFromHtml('', settings), cAssertTextareaDisplayStyle('none'), cRemoveEditor, cAssertTextareaDisplayStyle(''), Chain.op((editor) => EditorManager.init({ selector: '#tinymce' })), cAssertTextareaDisplayStyle(''), McEditor.cRemove ])), Logger.t('init editor with display: none', Chain.asStep({}, [ McEditor.cFromHtml('', settings), cAssertTextareaDisplayStyle('none'), cRemoveEditor, cAssertTextareaDisplayStyle('none'), Chain.op((editor) => EditorManager.init({ selector: '#tinymce' })), cAssertTextareaDisplayStyle('none'), McEditor.cRemove ])), Logger.t('init editor with display: block', Chain.asStep({}, [ McEditor.cFromHtml('', settings), cAssertTextareaDisplayStyle('none'), cRemoveEditor, cAssertTextareaDisplayStyle('block'), Chain.op((editor) => EditorManager.init({ selector: '#tinymce' })), cAssertTextareaDisplayStyle('block'), McEditor.cRemove ])) ], () => { success(); }, failure); });