import { describe, it } from '@ephox/bedrock-client'; import { assert } from 'chai'; import DomParser from 'tinymce/core/api/html/DomParser'; import Schema from 'tinymce/core/api/html/Schema'; import HtmlSerializer from 'tinymce/core/api/html/Serializer'; describe('browser.tinymce.core.html.SerializerTest', () => { it('Basic serialization', () => { const serializer = HtmlSerializer(); assert.equal(serializer.serialize(DomParser().parse('text < text&')), 'text < text&'); assert.equal( serializer.serialize(DomParser().parse('text')), 'text' ); assert.equal(serializer.serialize(DomParser().parse('')), ''); assert.equal(serializer.serialize(DomParser().parse('', { format: 'xhtml' })), ''); assert.equal(serializer.serialize(DomParser().parse('', { format: 'xhtml' })), ''); }); it('Sorting of attributes', () => { const serializer = HtmlSerializer(); assert.equal( serializer.serialize(DomParser().parse('x')), 'x' ); }); it('Serialize with validate: true, when parsing with validate:false bug', () => { const schema = Schema({ valid_elements: 'b' }); const serializer = HtmlSerializer({}, schema); assert.equal( serializer.serialize(DomParser({ validate: false }, schema).parse('ab')), 'ab' ); }); it('TINY-8446: Serialize pre elements with content that starts with newlines', () => { const schema = Schema({ valid_elements: 'pre' }); const serializer = HtmlSerializer({}, schema); assert.equal( serializer.serialize(DomParser({ validate: false }, schema).parse('
\n\ncontent
')), '
\n\ncontent
' ); }); it('TINY-8446: Serialize textarea elements with content that starts with newlines', () => { const schema = Schema({ valid_elements: 'textarea' }); const serializer = HtmlSerializer({}, schema); assert.equal( serializer.serialize(DomParser({ validate: false }, schema).parse('')), '' ); }); });