import { describe, it } from '@ephox/bedrock-client'; import { assert } from 'chai'; import * as Fragments from 'tinymce/core/undo/Fragments'; describe('browser.tinymce.core.undo.FragmentsTest', () => { const div = (html: string) => { const div = document.createElement('div'); div.innerHTML = html; return div; }; const html = (elm: Element) => { return elm.innerHTML; }; it('read', () => { assert.deepEqual(Fragments.read(div('')), []); assert.deepEqual(Fragments.read(div('a')), [ 'a' ]); assert.deepEqual(Fragments.read(div('')), [ '' ]); assert.deepEqual(Fragments.read(div('a')), [ 'a' ]); assert.deepEqual(Fragments.read(div('ac')), [ 'a', '', 'c' ]); }); it('read and exclude zero length text nodes', () => { const elm = div('
a
b
'); elm.insertBefore(document.createTextNode(''), elm.lastChild); assert.deepEqual(Fragments.read(elm), [ 'a
', 'b
' ]); }); it('write', () => { assert.deepEqual(html(Fragments.write([], div(''))), ''); assert.deepEqual(html(Fragments.write([], div('a'))), ''); assert.deepEqual(html(Fragments.write([ 'a' ], div(''))), 'a'); assert.deepEqual(html(Fragments.write([ 'a' ], div('a'))), 'a'); assert.deepEqual(html(Fragments.write([ 'a' ], div('b'))), 'a'); assert.deepEqual(html(Fragments.write([ 'a', 'c' ], div('ab'))), 'ac'); assert.deepEqual(html(Fragments.write([ 'c', 'd' ], div('ab'))), 'cd'); assert.deepEqual(html(Fragments.write([ 'c', 'd', '' ], div('ab'))), 'cd'); }); });