import { Assertions } from '@ephox/agar'; import { describe, it } from '@ephox/bedrock-client'; import { TinyHooks } from '@ephox/wrap-mcagar'; import { assert } from 'chai'; import Editor from 'tinymce/core/api/Editor'; import { PostProcessEvent, PreProcessEvent } from 'tinymce/core/api/EventTypes'; import { EditorEvent } from 'tinymce/core/api/util/EventDispatcher'; describe('browser.tinymce.core.dom.SerializerEventsTest', () => { const hook = TinyHooks.bddSetupLight({ inline: true, add_unload_trigger: false, base_url: '/project/tinymce/js/tinymce' }, []); it('Pre/post process events', () => { const editor = hook.editor(); let preProcessArgs: EditorEvent | undefined; let postProcessArgs: EditorEvent | undefined; editor.on('PreProcess', (o) => { preProcessArgs = o; editor.dom.setAttrib(preProcessArgs.node.getElementsByTagName('span')[0], 'class', 'abc'); }); editor.on('PostProcess', (o) => { o.content = o.content.replace(//g, ''); postProcessArgs = o; }); editor.setContent('

abc123link'); Assertions.assertHtml( 'Should be expected altered html', '

abc123link

', editor.serializer.serialize(editor.getBody(), { test: 'abc', getInner: true }) ); assert.equal(preProcessArgs?.test, 'abc', 'Should be expected preprocess custom arg'); assert.equal(preProcessArgs?.format, 'html', 'Should be expected preprocess format'); assert.equal(preProcessArgs?.node.firstChild?.nodeName, 'P', 'Should be expected element child'); assert.equal(postProcessArgs?.test, 'abc', 'Should be expected postprocess custom arg'); assert.equal(postProcessArgs?.format, 'html', 'Should be expected postprocess format'); assert.equal( postProcessArgs?.content, '

abc123link

', 'Should be expected postprocess format' ); }); });