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('
1
2
'); LegacyUnit.setSelection(editor, 'td', 0); editor.execCommand('mceTableInsertColAfter'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '
1 
2 
' ); }); suite.test('mceTableInsertColAfter command with two selected columns', function (editor) { editor.getBody().innerHTML = ( '' + '
123
456
' ); LegacyUnit.setSelection(editor, 'td', 0); editor.execCommand('mceTableInsertColAfter'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '' + '
12  3
45  6
' ); }); suite.test('mceTableInsertColBefore command', function (editor) { editor.setContent('
1
2
'); LegacyUnit.setSelection(editor, 'td', 0); editor.execCommand('mceTableInsertColBefore'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '
 1
 2
' ); }); suite.test('mceTableInsertColBefore command with two selected columns', function (editor) { editor.getBody().innerHTML = ( '' + '
123
456
' ); LegacyUnit.setSelection(editor, 'td:nth-child(2)', 0); editor.execCommand('mceTableInsertColBefore'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '' + '
1  23
4  56
' ); }); suite.test('mceTableInsertRowAfter command', function (editor) { editor.setContent('
12
'); LegacyUnit.setSelection(editor, 'td', 0); editor.execCommand('mceTableInsertRowAfter'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '
12
  
' ); }); suite.test('mceTableInsertRowAfter command with two selected rows', function (editor) { editor.getBody().innerHTML = ( '
12
34
' ); LegacyUnit.setSelection(editor, 'tr', 0); editor.execCommand('mceTableInsertRowAfter'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '' + '
12
34
  
  
' ); }); suite.test('mceTableInsertRowAfter command on merged cells', function (editor) { editor.setContent( '' + '' + '' + '' + '
123
45
6
' ); LegacyUnit.setSelection(editor, 'tr:nth-child(2) td', 0); editor.execCommand('mceTableInsertRowAfter'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '' + '' + '' + '' + '' + '' + '' + '
123
45
 
6
' ); }); suite.test('mceTableInsertRowBefore command', function (editor) { editor.setContent('
12
'); LegacyUnit.setSelection(editor, 'td', 0); editor.execCommand('mceTableInsertRowBefore'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '
  
12
' ); }); suite.test('mceTableInsertRowBefore command with two selected rows', function (editor) { editor.getBody().innerHTML = ( '
12
34
' ); LegacyUnit.setSelection(editor, 'tr', 0); editor.execCommand('mceTableInsertRowBefore'); LegacyUnit.equal( cleanTableHtml(editor.getContent()), '' + '
  
  
12
34
' ); }); 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); });