summaryrefslogtreecommitdiff
path: root/spec/frontend/content_editor/extensions/html_nodes_spec.js
blob: 24c68239025c433863e68853f291d0a6af906453 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import HTMLNodes from '~/content_editor/extensions/html_nodes';
import { createTestEditor, createDocBuilder } from '../test_utils';

describe('content_editor/extensions/html_nodes', () => {
  let tiptapEditor;
  let doc;
  let div;
  let pre;
  let p;

  beforeEach(() => {
    tiptapEditor = createTestEditor({ extensions: [...HTMLNodes] });

    ({
      builders: { doc, p, pre, div },
    } = createDocBuilder({
      tiptapEditor,
      names: {
        ...HTMLNodes.reduce(
          (builders, htmlNode) => ({
            ...builders,
            [htmlNode.name]: { nodeType: htmlNode.name },
          }),
          {},
        ),
      },
    }));
  });

  it.each`
    input                      | insertedNodes
    ${'<div><p>foo</p></div>'} | ${() => div(p('foo'))}
    ${'<pre><p>foo</p></pre>'} | ${() => pre(p('foo'))}
  `('parses and creates nodes for $input', ({ input, insertedNodes }) => {
    const expectedDoc = doc(insertedNodes());

    tiptapEditor.commands.setContent(input);

    expect(tiptapEditor.getJSON()).toEqual(expectedDoc.toJSON());
    expect(tiptapEditor.getHTML()).toEqual(input);
  });
});