This repository has been archived by the owner on Jun 26, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
/
escaping.js
71 lines (56 loc) · 2.31 KB
/
escaping.js
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
/**
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
import MarkdownDataProcessor from '../../src/gfmdataprocessor';
import { stringify } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
const testCases = {
'backslash': { test: '\\\\', result: '\\' },
'underscore': { test: '\\_', result: '_' },
'left brace': { test: '\\{', result: '{' },
'right brace': { test: '\\}', result: '}' },
'left bracket': { test: '\\[', result: '[' },
'right bracket': { test: '\\]', result: ']' },
'left paren': { test: '\\(', result: '(' },
'right paren': { test: '\\)', result: ')' },
'greater than': { test: '\\>', result: '>' },
'hash': { test: '\\#', result: '#' },
'peroid': { test: '\\.', result: '.' },
'exclamation mark': { test: '\\!', result: '!' },
'plus': { test: '\\+', result: '+' },
'minus': { test: '\\-', result: '-' },
};
describe( 'GFMDataProcessor', () => {
let dataProcessor;
beforeEach( () => {
dataProcessor = new MarkdownDataProcessor();
} );
describe( 'escaping', () => {
describe( 'toView', () => {
for ( const key in testCases ) {
const test = testCases[ key ].test;
const result = testCases[ key ].result;
it( `should escape ${ key }`, () => {
const documentFragment = dataProcessor.toView( test );
expect( stringify( documentFragment ) ).to.equal( `<p>${ result }</p>` );
} );
it( `should not escape ${ key } in code blocks`, () => {
const documentFragment = dataProcessor.toView( ` ${ test }` );
expect( stringify( documentFragment ) ).to.equal( `<pre><code>${ test }</code></pre>` );
} );
it( `should not escape ${ key } in code spans`, () => {
const documentFragment = dataProcessor.toView( '`' + test + '`' );
expect( stringify( documentFragment ) ).to.equal( `<p><code>${ test }</code></p>` );
} );
}
it( 'should escape backtick', () => {
const documentFragment = dataProcessor.toView( '\\`' );
expect( stringify( documentFragment ) ).to.equal( '<p>`</p>' );
} );
it( 'should not escape backtick in code blocks', () => {
const documentFragment = dataProcessor.toView( ' \\`' );
expect( stringify( documentFragment ) ).to.equal( '<pre><code>\\`</code></pre>' );
} );
} );
} );
} );