const createPreviewIframeNode = function (editor, node) { let previewWrapper; let previewNode; let shimNode; const name = node.name; previewWrapper = new Node('span', 1); previewWrapper.attr({ 'contentEditable': 'false', 'style': node.attr('style'), 'data-mce-object': name, 'class': 'mce-preview-object mce-object-' + name }); retainAttributesAndInnerHtml(editor, node, previewWrapper); previewNode = new Node(name, 1); previewNode.attr({ src: node.attr('src'), allowfullscreen: node.attr('allowfullscreen'), width: node.attr('width') || '300', height: node.attr('height') || (name === 'audio' ? '30' : '150'), frameborder: '0' }); shimNode = new Node('span', 1); shimNode.attr('class', 'mce-shim'); previewWrapper.append(previewNode); previewWrapper.append(shimNode); return previewWrapper; };
suite.test('replace single child', function () { let root, node1, node2; root = new Node('#frag', 11); node1 = root.append(new Node('b', 1)); node2 = root.append(new Node('em', 1)); node1.replace(node2); ok(root.firstChild === node2, 'root.firstChild'); ok(root.lastChild === node2, 'root.lastChild'); ok(node2.parent === root, 'node2.parent'); ok(!node2.next, 'node2.next'); ok(!node2.prev, 'node2.prev'); });
suite.test('replace middle child', function () { let root, node1, node2, node3, node4; root = new Node('#frag', 11); node1 = root.append(new Node('b', 1)); node2 = root.append(new Node('b', 1)); node3 = root.append(new Node('b', 1)); node4 = root.append(new Node('em', 1)); node2.replace(node4); ok(root.firstChild === node1, 'root.firstChild'); ok(root.lastChild === node3, 'root.lastChild'); ok(node4.parent === root, 'node4.parent'); ok(node4.next === node3, 'node4.next'); ok(node4.prev === node1, 'node4.prev'); });
suite.test('append existing node before other existing node', function () { let root, node, node2; root = new Node('#frag', 11); node = root.append(new Node('a', 1)); node2 = root.append(new Node('b', 1)); root.append(node); ok(root.firstChild === node2, 'root.firstChild'); ok(root.lastChild === node, 'root.lastChild'); LegacyUnit.equal(node.next, null, 'node.next'); ok(node.prev === node2, 'node.prev'); ok(node.parent === root, 'node.parent'); ok(node2.parent === root, 'node2.parent'); LegacyUnit.equal(node2.prev, undefined, 'node2.prev'); ok(node2.next === node, 'node2.next'); });
suite.test('clone', function () { let root, node, clone; node = new Node('#text', 3); node.value = 'value'; clone = node.clone(); LegacyUnit.equal(clone.name, '#text'); LegacyUnit.equal(clone.type, 3); LegacyUnit.equal(clone.value, 'value'); LegacyUnit.equal(clone.parent, undefined); LegacyUnit.equal(clone.next, undefined); LegacyUnit.equal(clone.prev, undefined); root = new Node('#frag', 11); node = new Node('#text', 3); node.value = 'value'; root.append(node); LegacyUnit.equal(clone.name, '#text'); LegacyUnit.equal(clone.type, 3); LegacyUnit.equal(clone.value, 'value'); LegacyUnit.equal(clone.parent, undefined); LegacyUnit.equal(clone.next, undefined); LegacyUnit.equal(clone.prev, undefined); node = new Node('b', 1); node.attr('id', 'id'); node.attr('class', 'class'); node.attr('title', 'title'); clone = node.clone(); LegacyUnit.equal(clone.name, 'b'); LegacyUnit.equal(clone.type, 1); LegacyUnit.deepEqual(clone.attributes, [{ name: 'class', value: 'class' }, { name: 'title', value: 'title' }]); LegacyUnit.deepEqual(clone.attributes.map, { class: 'class', title: 'title' }); });
suite.test('remove middle node', function () { let root, node, node2, node3; root = new Node('#frag', 11); node = root.append(new Node('a', 1)); node2 = root.append(new Node('b', 1)); node3 = root.append(new Node('c', 1)); node2.remove(); LegacyUnit.equal(node2.parent, null); LegacyUnit.equal(node2.next, null); LegacyUnit.equal(node2.prev, null); ok(root.firstChild === node, 'root.firstChild'); ok(root.lastChild === node3, 'root.lastChild'); ok(node.next === node3, 'node.next'); LegacyUnit.equal(node.prev, undefined, 'node.prev'); LegacyUnit.equal(node3.prev === node, true, 'node3.prev'); LegacyUnit.equal(node3.next, undefined, 'node3.next'); });
suite.test('empty', function () { let root, node1; root = new Node('#frag', 11); node1 = root.append(new Node('b', 1)); node1.empty(); ok(root.firstChild === node1, 'root.firstChild'); ok(root.lastChild === node1, 'root.firstChild'); ok(!node1.firstChild, 'node1.firstChild'); ok(!node1.lastChild, 'node1.firstChild'); });
suite.test('unwrap', function () { let root, node1, node2, node3; root = new Node('#frag', 11); node1 = root.append(new Node('b', 1)); node2 = node1.append(new Node('em', 1)); node1.unwrap(); ok(root.firstChild === node2, 'root.firstChild'); ok(root.lastChild === node2, 'root.lastChild'); ok(node2.parent === root, 'node2.parent'); root = new Node('#frag', 11); node1 = root.append(new Node('b', 1)); node2 = node1.append(new Node('em', 1)); node3 = node1.append(new Node('span', 1)); node1.unwrap(); ok(root.firstChild === node2, 'root.firstChild'); ok(root.lastChild === node3, 'root.lastChild'); ok(node2.parent === root, 'node2.parent'); ok(node3.parent === root, 'node3.parent'); });
suite.test('insert after last', function () { let fragment, root, node, node2; fragment = new Node('#frag', 11); root = fragment.append(new Node('body', 1)); node = root.append(new Node('a', 1)); node2 = root.insert(new Node('x', 1), node); ok(root.firstChild === node, 'root.firstChild'); ok(root.lastChild === node2, 'root.lastChild'); ok(node.next === node2, 'node.next'); ok(node2.prev === node, 'node2.prev'); ok(node2.parent === root, 'node3.next'); });
suite.test('remove single child', function () { let root, node; root = new Node('#frag', 11); node = root.append(new Node('p', 1)); node = root.firstChild.remove(); LegacyUnit.equal(root.firstChild, undefined); LegacyUnit.equal(root.lastChild, undefined); LegacyUnit.equal(node.parent, null); LegacyUnit.equal(node.next, null); LegacyUnit.equal(node.prev, null); LegacyUnit.equal(node.name, 'p'); });