asynctest(
'browser.tinymce.core.MiscCommandsTest',
[
'ephox.agar.api.Pipeline',
'ephox.mcagar.api.LegacyUnit',
'ephox.mcagar.api.TinyLoader',
'tinymce.core.Env',
'tinymce.core.test.HtmlUtils',
'tinymce.core.util.JSON',
'tinymce.themes.modern.Theme'
],
function (Pipeline, LegacyUnit, TinyLoader, Env, HtmlUtils, JSON, Theme) {
var success = arguments[arguments.length - 2];
var failure = arguments[arguments.length - 1];
var suite = LegacyUnit.createSuite();
Theme();
var normalizeRng = function (rng) {
if (rng.startContainer.nodeType === 3) {
if (rng.startOffset === 0) {
rng.setStartBefore(rng.startContainer);
} else if (rng.startOffset >= rng.startContainer.nodeValue.length - 1) {
rng.setStartAfter(rng.startContainer);
}
}
if (rng.endContainer.nodeType === 3) {
if (rng.endOffset === 0) {
rng.setEndBefore(rng.endContainer);
} else if (rng.endOffset >= rng.endContainer.nodeValue.length - 1) {
rng.setEndAfter(rng.endContainer);
}
}
return rng;
};
var ok = function (value, label) {
return LegacyUnit.equal(value, true, label);
};
suite.test('InsertHorizontalRule', function (editor) {
var rng;
editor.setContent('<p>123</p>');
rng = editor.dom.createRng();
rng.setStart(editor.dom.select('p')[0].firstChild, 1);
rng.setEnd(editor.dom.select('p')[0].firstChild, 2);
editor.selection.setRng(rng);
editor.execCommand('InsertHorizontalRule');
LegacyUnit.equal(editor.getContent(), '<p>1</p><hr /><p>3</p>');
rng = normalizeRng(editor.selection.getRng(true));
ok(rng.collapsed);
LegacyUnit.equalDom(rng.startContainer, editor.getBody().lastChild);
LegacyUnit.equal(rng.startContainer.nodeName, 'P');
LegacyUnit.equal(rng.startOffset, 0);
LegacyUnit.equal(rng.endContainer.nodeName, 'P');
LegacyUnit.equal(rng.endOffset, 0);
});
if (Env.ceFalse) {
suite.test('SelectAll', function (editor) {
editor.setContent('<p>a</p><div contenteditable="false"><div contenteditable="true">b</div><p>c</p>');
LegacyUnit.setSelection(editor, 'div div', 0);
editor.execCommand('SelectAll');
LegacyUnit.equal(editor.selection.getStart().nodeName, 'DIV');
LegacyUnit.equal(editor.selection.getEnd().nodeName, 'DIV');
LegacyUnit.equal(editor.selection.isCollapsed(), false);
});
}
suite.test('InsertLineBreak', function (editor) {
editor.setContent('<p>123</p>');
LegacyUnit.setSelection(editor, 'p', 2);
editor.execCommand('InsertLineBreak');
LegacyUnit.equal(editor.getContent(), '<p>12<br />3</p>');
editor.setContent('<p>123</p>');
LegacyUnit.setSelection(editor, 'p', 0);
editor.execCommand('InsertLineBreak');
LegacyUnit.equal(editor.getContent(), '<p><br />123</p>');
editor.setContent('<p>123</p>');
LegacyUnit.setSelection(editor, 'p', 3);
editor.execCommand('InsertLineBreak');
LegacyUnit.equal(HtmlUtils.cleanHtml(editor.getBody().innerHTML), (Env.ie && Env.ie < 11) ? '<p>123<br></p>' : '<p>123<br><br></p>');
});
TinyLoader.setup(function (editor, onSuccess, onFailure) {
Pipeline.async({}, suite.toSteps(editor), onSuccess, onFailure);
}, {
add_unload_trigger: false,
disable_nodechange: true,
indent: false,
entities: 'raw',
convert_urls: false,
valid_styles: {
'*': 'color,font-size,font-family,background-color,font-weight,font-style,text-decoration,' +
'float,margin,margin-top,margin-right,margin-bottom,margin-left,padding-left,text-align,display'
},
skin_url: '/project/src/skins/lightgray/dist/lightgray'
}, success, failure);
}
);
|