-
Notifications
You must be signed in to change notification settings - Fork 0
/
highlight.test.js
72 lines (60 loc) · 2.59 KB
/
highlight.test.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
72
/**
* import modules
*/
import assert from 'assert';
import Handlebars from 'handlebars';
import highlight, {register} from '../src/highlight';
describe('{{highlight value lang=\'<lang>\'}}', () => {
let template = null;
before(() => {
const hbs = Handlebars.create();
hbs.registerHelper('highlight', highlight);
template = hbs.compile('{{{highlight value lang=options.lang}}}');
});
it('should return string if argument "value" is not string.', () => {
const values = [
[0, null, '0'],
[null, null, ''],
[{}, null, '[object Object]'],
[[], null, '']
];
values.forEach(([value, lang, expected]) => {
const result = template({value, options: {lang}});
assert(typeof result === 'string');
assert(result === expected);
});
});
it('should return highlighted string if argument "value" is string.', () => {
const values = [
['value', null, 'value'],
[
'<div class="hoge"></div>',
'html',
'<span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"hoge"</span>></span><span class="hljs-tag"></<span class="hljs-name">div</span>></span>'
],
[
'import lodash from "lodash";',
'js',
'<span class="hljs-keyword">import</span> lodash <span class="hljs-keyword">from</span> <span class="hljs-string">"lodash"</span>;'
],
[
'<div>{{#if @first}}first{{else}}not first{{/if}}</div>',
'hbs',
'<span class="xml"><span class="hljs-tag"><<span class="hljs-name">div</span>></span></span><span class="hljs-template-tag">{{#<span class="hljs-name"><span class="hljs-builtin-name">if</span></span> @first}}</span><span class="xml">first</span><span class="hljs-template-tag">{{<span class="hljs-keyword">else</span>}}</span><span class="xml">not first</span><span class="hljs-template-tag">{{/<span class="hljs-name"><span class="hljs-builtin-name">if</span></span>}}</span><span class="xml"><span class="hljs-tag"></<span class="hljs-name">div</span>></span></span>'
]
];
values.forEach(([value, lang, expected]) => {
const result = template({value, options: {lang}});
assert(typeof result === 'string');
assert(result === expected);
});
});
describe('register', () => {
it('should be registered.', () => {
const hbs = Handlebars.create();
register(hbs);
hbs.registerHelper('viaRegisterHelper', highlight);
assert(hbs.helpers.highlight === hbs.helpers.viaRegisterHelper);
});
});
});