import { LegacyUnit } from '@ephox/mcagar'; import { Pipeline } from '@ephox/agar'; import Fragments from 'tinymce/core/undo/Fragments'; import { UnitTest } from '@ephox/bedrock'; UnitTest.asynctest('browser.tinymce.core.undo.FragmentsTest', function () { const success = arguments[arguments.length - 2]; const failure = arguments[arguments.length - 1]; const suite = LegacyUnit.createSuite(); const div = function (html) { const div = document.createElement('div'); div.innerHTML = html; return div; }; const html = function (elm) { return elm.innerHTML; }; suite.test('read', function () { LegacyUnit.deepEqual(Fragments.read(div('')), []); LegacyUnit.deepEqual(Fragments.read(div('a')), ['a']); LegacyUnit.deepEqual(Fragments.read(div('')), ['']); LegacyUnit.deepEqual(Fragments.read(div('a')), ['a']); LegacyUnit.deepEqual(Fragments.read(div('ac')), ['a', '', 'c']); }); suite.test('read and exclude zero length text nodes', function () { const elm = div('
a
b
'); elm.insertBefore(document.createTextNode(''), elm.lastChild); LegacyUnit.deepEqual(Fragments.read(elm), ['a
', 'b
']); }); suite.test('write', function () { LegacyUnit.deepEqual(html(Fragments.write([], div(''))), ''); LegacyUnit.deepEqual(html(Fragments.write([], div('a'))), ''); LegacyUnit.deepEqual(html(Fragments.write(['a'], div(''))), 'a'); LegacyUnit.deepEqual(html(Fragments.write(['a'], div('a'))), 'a'); LegacyUnit.deepEqual(html(Fragments.write(['a'], div('b'))), 'a'); LegacyUnit.deepEqual(html(Fragments.write(['a', 'c'], div('ab'))), 'ac'); LegacyUnit.deepEqual(html(Fragments.write(['c', 'd'], div('ab'))), 'cd'); LegacyUnit.deepEqual(html(Fragments.write(['c', 'd', ''], div('ab'))), 'cd'); }); Pipeline.async({}, suite.toSteps({}), function () { success(); }, failure); });