Files
web/public/tinymce/src/plugins/visualchars/test/ts/atomic/NodesTest.ts
2025-10-22 15:39:40 +08:00

51 lines
1.6 KiB
TypeScript

import { Assertions } from '@ephox/agar';
import { Element } from '@ephox/sugar';
import Nodes from 'tinymce/plugins/visualchars/core/Nodes';
import { UnitTest } from '@ephox/bedrock';
import { document } from '@ephox/dom-globals';
UnitTest.test('atomic.tinymce.plugins.visualchars.NodesTest', function () {
const nbsp = '\u00a0';
const shy = '\u00AD';
const testReplaceWithSpans = function () {
Assertions.assertHtml(
'should return span around shy and nbsp',
'a<span data-mce-bogus="1" class="mce-nbsp">\u00a0</span>b<span data-mce-bogus="1" class="mce-shy">\u00AD</span>',
Nodes.replaceWithSpans('a' + nbsp + 'b' + shy)
);
};
const testFilterDescendants = function () {
const div = document.createElement('div');
div.innerHTML = '<p>a</p>' +
'<p>b' + nbsp + '</p>' +
'<p>c</p>' +
'<p>d' + shy + '</p>';
Assertions.assertEq(
'should return list with nodes with shy or nbsp in it',
2,
Nodes.filterDescendants(Element.fromDom(div), Nodes.isMatch).length
);
};
const testFilterDescendants2 = function () {
const div = document.createElement('div');
div.innerHTML = '<p>a' + nbsp + '</p>' +
'<p>b' + nbsp + '</p>' +
'<p>c' + nbsp + '</p>' +
'<p>d' + shy + '</p>';
Assertions.assertEq(
'should return list with nodes with shy or nbsp in it',
4,
Nodes.filterDescendants(Element.fromDom(div), Nodes.isMatch).length
);
};
testReplaceWithSpans();
testFilterDescendants();
testFilterDescendants2();
});