import { LegacyUnit } from '@ephox/mcagar'; import { Pipeline, Assertions } from '@ephox/agar'; import Schema from 'tinymce/core/api/html/Schema'; import Serializer from 'tinymce/core/api/html/Serializer'; import DomParser from 'tinymce/core/api/html/DomParser'; import { UnitTest } from '@ephox/bedrock'; UnitTest.asynctest('browser.tinymce.core.html.DomParserTest', function () { const success = arguments[arguments.length - 2]; const failure = arguments[arguments.length - 1]; const suite = LegacyUnit.createSuite(); const schema = Schema({ valid_elements: '*[class|title]' }); const serializer = Serializer({}, schema); let parser, root; const countNodes = function (node, counter?) { let sibling; if (!counter) { counter = {}; } if (node.name in counter) { counter[node.name]++; } else { counter[node.name] = 1; } for (sibling = node.firstChild; sibling; sibling = sibling.next) { countNodes(sibling, counter); } return counter; }; schema.addValidChildren('+body[style]'); suite.test('Parse element', function () { let parser, root; parser = DomParser({}, schema); root = parser.parse('test'); LegacyUnit.equal(serializer.serialize(root), 'test', 'Inline element'); LegacyUnit.equal(root.firstChild.type, 1, 'Element type'); LegacyUnit.equal(root.firstChild.name, 'b', 'Element name'); LegacyUnit.deepEqual( root.firstChild.attributes, [{ name: 'title', value: 'title' }, { name: 'class', value: 'class' }], 'Element attributes' ); LegacyUnit.deepEqual(countNodes(root), { 'body': 1, 'b': 1, '#text': 1 }, 'Element attributes (count)'); parser = DomParser({}, schema); root = parser.parse(' \t\r\n