import { Chain, Mouse, NamedChain, UiFinder, RawAssertions } from '@ephox/agar'; import { UnitTest } from '@ephox/bedrock'; import Plugin from 'tinymce/plugins/table/Plugin'; import Theme from 'tinymce/themes/modern/Theme'; import { Insert, Body, Element, Html, Attr, Remove } from '@ephox/sugar'; import EditorManager from 'tinymce/core/api/EditorManager'; import { Editor } from '@ephox/mcagar'; UnitTest.asynctest('browser.tinymce.plugins.table.InlineEditorInsideTableTest', (success, failure) => { Plugin(); Theme(); const containerHtml = '' + '' + '' + '' + '' + '' + '
' + '
a
' + '
'; const cOnSelector = function (selector) { return Chain.on(function (_, next) { EditorManager.init({ selector, inline: true, statusbar: false, menubar: false, plugins: 'table', skin_url: '/project/js/tinymce/skins/lightgray', setup (editor) { editor.on('SkinLoaded', function () { setTimeout(function () { next(Chain.wrap(editor)); }, 0); }); } }); }); }; const cNotExists = (container, selector) => { return Chain.op(() => { UiFinder.findIn(container, selector).fold( () => RawAssertions.assertEq('should not find anything', true, true), () => RawAssertions.assertEq('Expected ' + selector + ' not to exist.', true, false) ); }); }; NamedChain.pipeline([ NamedChain.write('container', Chain.on((input, next) => { const container = Element.fromTag('div'); Attr.set(container, 'id', 'test-container-div'); Html.set(container, containerHtml); Insert.append(Body.body(), container); next(Chain.wrap(container)); })), NamedChain.write('editor', cOnSelector('div.tinymce')), NamedChain.direct('container', Chain.fromChains([ UiFinder.cFindIn('div.tinymce'), Mouse.cMouseOver, cNotExists(Body.body(), 'div[data-row="0"]') ]), false), NamedChain.read('editor', Editor.cRemove), NamedChain.read('container', Chain.op((div) => Remove.remove(div))) ], function () { success(); }, failure); });