summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-markdown/test/page.js
blob: 649827edc26739300f5df5d113443beb5faff50e (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const fs = require('fs');
const path = require('path');
const expect = require('expect');

const page = require('../src').page;

describe('Page', () => {
    let LEXED;

    before(() => {
        const CONTENT = fs.readFileSync(path.join(__dirname, './fixtures/PAGE.md'), 'utf8');
        LEXED = page(CONTENT);
    });

    it('should gen content', () => {
        expect(LEXED.content).toExist();
    });

    it('should not add id to headings', () => {
        expect(page('# Hello').content).toBe('<h1>Hello</h1>');
        expect(page('# Hello {#test}').content).toBe('<h1 id="test">Hello</h1>');
    });

    it('should escape codeblocks in preparation (1)', () => {
        expect(page.prepare('Hello `world`')).toBe('Hello {% raw %}`world`{% endraw %}\n\n');
        expect(page.prepare('Hello `world test`')).toBe('Hello {% raw %}`world test`{% endraw %}\n\n');
        expect(page.prepare('Hello ```world test```')).toBe('Hello {% raw %}`world test`{% endraw %}\n\n');
        expect(page.prepare('Hello\n```js\nworld test\n```\n')).toBe('Hello\n\n{% raw %}\n```js\nworld test\n```\n\n{% endraw %}\n');
        expect(page.prepare('Hello\n```\ntest\n\tworld\n\ttest\n```')).toBe('Hello\n\n{% raw %}\n```\ntest\n    world\n    test\n```\n\n{% endraw %}\n');
    });

    it('should escape codeblocks in preparation (2)', () => {
        expect(
            page.prepare('Hello\n\n\n\tworld\n\thello\n\n\ntest')
        ).toBe(
            'Hello\n\n{% raw %}\n```\nworld\nhello\n```\n\n{% endraw %}\ntest\n\n'
        );
        expect(
            page.prepare('Hello\n\n\n\tworld\n\thello\n\n\n')
        ).toBe(
            'Hello\n\n{% raw %}\n```\nworld\nhello\n```\n\n{% endraw %}\n'
        );
    });

    it('should escape codeblocks with nunjucks tags', () => {
        expect(
            page.prepare('Hello {{ "Bonjour" }} {% raw %}```test```{% endraw %}')
        ).toBe(
            'Hello {{ "Bonjour" }} {% raw %}`test`{% endraw %}\n\n'
        );
    });

    it('should escape codeblocks with nunjucks tags in {% raw %} tags', () => {
        expect(
            page.prepare('{% raw %}Hello {{ "Bonjour" }} ```test```{% endraw %}')
        ).toBe(
            '{% raw %}Hello {{ "Bonjour" }} `test`{% endraw %}\n\n'
        );
        expect(
            page.prepare('{% raw %}Hello {{ "Bonjour" }} {% raw %}{% endraw %}```test```')
        ).toBe(
            '{% raw %}Hello {{ "Bonjour" }} {% raw %}{% endraw %}{% raw %}`test`{% endraw %}\n\n'
        );
        expect(
            page.prepare('```{% raw %}Hello {{ "Bonjour" }} {% raw %}```')
        ).toBe(
            '{% raw %}`{% raw %}Hello {{ "Bonjour" }} {% raw %}`{% endraw %}\n\n'
        );

        expect(
            page.prepare('```\ntest\n```\n\n\n### Test')
        ).toBe(
            '{% raw %}\n```\ntest\n```\n\n{% endraw %}\n### Test\n\n'
        );
    });

    it('should not process math', () => {
        expect(page.prepare('Hello $world$')).toBe('Hello $world$\n\n');
        expect(page.prepare('Hello $$world$$')).toBe('Hello $$world$$\n\n');
    });
});