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('')), '' ); }); });