import AdvListPlugin from 'tinymce/plugins/advlist/Plugin'; import ListsPlugin from 'tinymce/plugins/lists/Plugin'; import ModernTheme from 'tinymce/themes/modern/Theme'; import { LegacyUnit, TinyLoader } from '@ephox/mcagar'; import { Pipeline } from '@ephox/agar'; import { UnitTest } from '@ephox/bedrock'; UnitTest.asynctest('browser.tinymce.plugins.lists.AdvlistPluginTest', function () { const success = arguments[arguments.length - 2]; const failure = arguments[arguments.length - 1]; const suite = LegacyUnit.createSuite(); AdvListPlugin(); ListsPlugin(); ModernTheme(); const listStyleTest = function (title, definition) { suite.test(title, function (editor) { editor.getBody().innerHTML = definition.inputContent; LegacyUnit.setSelection(editor, definition.inputSelection[0], definition.inputSelection[1]); editor.execCommand(definition.command, false, { 'list-style-type': definition.listType }); const rng = editor.selection.getRng(true); const expectedElm = editor.dom.select(definition.expectedSelection[0])[0]; LegacyUnit.equal(editor.getContent(), definition.expectedContent, 'Editor content should be equal'); LegacyUnit.equalDom(rng.startContainer.parentNode, expectedElm, 'Selection elements should be equal'); LegacyUnit.equal(rng.startOffset, definition.expectedSelection[1], 'Selection offset should be equal'); }); }; listStyleTest('Apply unordered list style to an unordered list', { inputContent: '', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: 'disc', expectedContent: '', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style to an ordered list', { inputContent: '
  1. a
', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: 'lower-roman', expectedContent: '
  1. a
', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply unordered list style to an unordered list', { inputContent: '
  1. a
', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: 'disc', expectedContent: '', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply unordered list style to an unordered list with a child unordered list', { inputContent: '', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: 'disc', expectedContent: '', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style to an ordered list with a child ordered list', { inputContent: '
  1. a
    1. b
', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: 'lower-roman', expectedContent: '
  1. a
    1. b
', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply unordered list style to an unordered list with a child ordered list', { inputContent: '', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: 'disc', expectedContent: '', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style to an unordered list with a child unordered list', { inputContent: '
  1. a
', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: 'lower-roman', expectedContent: '
  1. a
', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply unordered list style to an unordered list with a child unordered list', { inputContent: '', inputSelection: ['li:nth-child(1) > ul > li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: 'disc', expectedContent: '', expectedSelection: ['li:nth-child(1) > ul > li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style to an ordered list with a child ordered list', { inputContent: '
  1. a
    1. b
', inputSelection: ['li:nth-child(1) > ol > li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: 'lower-roman', expectedContent: '
  1. a
    1. b
', expectedSelection: ['li:nth-child(1) > ol > li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style to an unordered list with a child ordered list', { inputContent: '', inputSelection: ['li:nth-child(1) > ol > li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: 'lower-roman', expectedContent: '', expectedSelection: ['li:nth-child(1) > ol > li:nth-child(1)', 0] }); listStyleTest('Apply unordered list style to ordered list with a child unordered list', { inputContent: '
  1. a
', inputSelection: ['li:nth-child(1) > ul > li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: 'disc', expectedContent: '
  1. a
', expectedSelection: ['li:nth-child(1) > ul > li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style to an unordered list with a child ordered list', { inputContent: '', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: false, expectedContent: '
  1. a
    1. b
', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply unordered list style to an ordered list with a child unordered list', { inputContent: '
  1. a
', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: false, expectedContent: '', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style "false" to an ordered list with a child unordered list', { inputContent: '
  1. a
', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: false, expectedContent: '

a

', expectedSelection: ['p:nth-child(1)', 0] }); listStyleTest('Apply unordered list style "false" to an unordered list with a child ordered list', { inputContent: '', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: false, expectedContent: '

a

  1. b
', expectedSelection: ['p:nth-child(1)', 0] }); listStyleTest('Apply unordered list style "false" to an ordered list with a child ordered list', { inputContent: '
  1. a
    1. b
', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyUnorderedListStyle', listType: false, expectedContent: '', expectedSelection: ['li:nth-child(1)', 0] }); listStyleTest('Apply ordered list style "false" to an unordered list with a child unordered list', { inputContent: '', inputSelection: ['li:nth-child(1)', 0], command: 'ApplyOrderedListStyle', listType: false, expectedContent: '
  1. a
', expectedSelection: ['li:nth-child(1)', 0] }); TinyLoader.setup(function (editor, onSuccess, onFailure) { Pipeline.async({}, suite.toSteps(editor), onSuccess, onFailure); }, { plugins: 'advlist lists', add_unload_trigger: false, indent: false, entities: 'raw', valid_elements: 'li[style],ol[style],ul[style],dl,dt,dd,em,strong,span,#p,div,br', valid_styles: { '*': 'list-style-type' }, disable_nodechange: true, skin_url: '/project/js/tinymce/skins/lightgray' }, success, failure); });