import { Pipeline } from '@ephox/agar';
import { LegacyUnit, TinyLoader } from '@ephox/mcagar';
import HtmlUtils from '../../module/test/HtmlUtils';
import Tools from 'tinymce/core/api/util/Tools';
import Theme from 'tinymce/themes/modern/Theme';
import { UnitTest } from '@ephox/bedrock';
UnitTest.asynctest('browser.tinymce.core.keyboard.EnterKeyCeFalseTest', function () {
const success = arguments[arguments.length - 2];
const failure = arguments[arguments.length - 1];
const suite = LegacyUnit.createSuite();
Theme();
const pressEnter = function (editor, evt?) {
const dom = editor.dom, target = editor.selection.getNode();
evt = Tools.extend({ keyCode: 13 }, evt);
dom.fire(target, 'keydown', evt);
dom.fire(target, 'keypress', evt);
dom.fire(target, 'keyup', evt);
};
suite.test('Enter in text within contentEditable:true h1 inside contentEditable:false div', function (editor) {
editor.getBody().innerHTML = '
ab
';
LegacyUnit.setSelection(editor, 'div h1', 1);
pressEnter(editor);
LegacyUnit.equal(
HtmlUtils.cleanHtml(editor.getBody().innerHTML),
'ab
'
);
});
suite.test('Enter before cE=false div', function (editor) {
editor.getBody().innerHTML = 'x
';
editor.selection.select(editor.dom.select('div')[0]);
editor.selection.collapse(true);
pressEnter(editor);
LegacyUnit.equal(
HtmlUtils.cleanHtml(editor.getBody().innerHTML),
'
x
'
);
LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
});
suite.test('Enter after cE=false div', function (editor) {
editor.getBody().innerHTML = 'x
';
editor.selection.select(editor.dom.select('div')[0]);
editor.selection.collapse(false);
pressEnter(editor);
LegacyUnit.equal(
HtmlUtils.cleanHtml(editor.getBody().innerHTML),
'x
'
);
LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
});
TinyLoader.setup(function (editor, onSuccess, onFailure) {
Pipeline.async({}, suite.toSteps(editor), onSuccess, onFailure);
}, {
add_unload_trigger: false,
disable_nodechange: true,
schema: 'html5',
extended_valid_elements: 'div[id|style|contenteditable],span[id|style|contenteditable],#dt,#dd',
entities: 'raw',
indent: false,
skin_url: '/project/js/tinymce/skins/lightgray'
}, success, failure);
});