import { Pipeline } from '@ephox/agar';
import { UnitTest } from '@ephox/bedrock';
import { LegacyUnit, TinyLoader } from '@ephox/mcagar';
import Plugin from 'tinymce/plugins/table/Plugin';
import Theme from 'tinymce/themes/modern/Theme';
UnitTest.asynctest('browser.tinymce.plugins.table.InsertCommandsTest', function () {
const success = arguments[arguments.length - 2];
const failure = arguments[arguments.length - 1];
const suite = LegacyUnit.createSuite();
Plugin();
Theme();
const cleanTableHtml = function (html) {
return html.replace(/
( |
]+>)<\/p>$/, '');
};
suite.test('mceTableInsertColAfter command', function (editor) {
editor.focus();
editor.setContent('
');
LegacyUnit.setSelection(editor, 'td', 0);
editor.execCommand('mceTableInsertColAfter');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
suite.test('mceTableInsertColAfter command with two selected columns', function (editor) {
editor.getBody().innerHTML = (
''
);
LegacyUnit.setSelection(editor, 'td', 0);
editor.execCommand('mceTableInsertColAfter');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
suite.test('mceTableInsertColBefore command', function (editor) {
editor.setContent('');
LegacyUnit.setSelection(editor, 'td', 0);
editor.execCommand('mceTableInsertColBefore');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
suite.test('mceTableInsertColBefore command with two selected columns', function (editor) {
editor.getBody().innerHTML = (
''
);
LegacyUnit.setSelection(editor, 'td:nth-child(2)', 0);
editor.execCommand('mceTableInsertColBefore');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
suite.test('mceTableInsertRowAfter command', function (editor) {
editor.setContent('');
LegacyUnit.setSelection(editor, 'td', 0);
editor.execCommand('mceTableInsertRowAfter');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
suite.test('mceTableInsertRowAfter command with two selected rows', function (editor) {
editor.getBody().innerHTML = (
''
);
LegacyUnit.setSelection(editor, 'tr', 0);
editor.execCommand('mceTableInsertRowAfter');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
suite.test('mceTableInsertRowAfter command on merged cells', function (editor) {
editor.setContent(
'' +
'| 1 | 2 | 3 |
' +
'| 4 | 5 |
' +
'| 6 |
' +
'
'
);
LegacyUnit.setSelection(editor, 'tr:nth-child(2) td', 0);
editor.execCommand('mceTableInsertRowAfter');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
'' +
'' +
'| 1 | 2 | 3 |
' +
'| 4 | 5 |
' +
'| |
' +
'| 6 |
' +
'' +
'
'
);
});
suite.test('mceTableInsertRowBefore command', function (editor) {
editor.setContent('');
LegacyUnit.setSelection(editor, 'td', 0);
editor.execCommand('mceTableInsertRowBefore');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
suite.test('mceTableInsertRowBefore command with two selected rows', function (editor) {
editor.getBody().innerHTML = (
''
);
LegacyUnit.setSelection(editor, 'tr', 0);
editor.execCommand('mceTableInsertRowBefore');
LegacyUnit.equal(
cleanTableHtml(editor.getContent()),
''
);
});
TinyLoader.setup(function (editor, onSuccess, onFailure) {
Pipeline.async({}, suite.toSteps(editor), onSuccess, onFailure);
}, {
plugins: 'table',
indent: false,
valid_styles: {
'*': 'height,vertical-align,text-align,float,border-color,background-color,border,padding,border-spacing,border-collapse'
},
skin_url: '/project/js/tinymce/skins/lightgray'
}, success, failure);
});