Skip to content

Commit 5859d52

Browse files
committed
create: lib/highlightjs-lines.test.js — unit test for hljs-lines
1 parent c4e983f commit 5859d52

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

lib/highlightjs-lines.test.js

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import highlight from "highlight.js"
2+
import highlightjsLines from "./highlightjs-lines.js"
3+
import highlightDiff from "highlightjs-code-diff"
4+
import markdownIt from "markdown-it"
5+
import { describe, it } from 'node:test'
6+
import assert from "node:assert"
7+
8+
const hljsLinesWithDiff = highlightjsLines(highlightDiff(highlight))
9+
const hljsLines = highlightjsLines(highlight)
10+
11+
describe('Highlight Lines using Markdown With Diff', () => {
12+
const mIt = markdownIt({
13+
html: true,
14+
linkify: true,
15+
typographer: true,
16+
highlight: function (str, lang) {
17+
if (lang) {
18+
try {
19+
return hljsLinesWithDiff.highlight(str, { language: lang }).value
20+
} catch (__) { }
21+
}
22+
return ""
23+
}
24+
})
25+
it('Test With Diff (Deletion)', () => {
26+
const data = `
27+
\`\`\`diff:js
28+
- setTimeout(() => throw new Error(),0)
29+
\`\`\`
30+
`
31+
const value = mIt.render(data)
32+
assert.strictEqual(value, `<pre><code class="language-diff:js"><span class="hljs-deletion"><span class='hljs-indicator'>-</span><span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Error</span>(),<span class="hljs-number">0</span>)</span>\n</code></pre>\n`)
33+
})
34+
it('Test With Diff (Addition)', () => {
35+
const data = `
36+
\`\`\`diff:js
37+
+ setTimeout(() => throw new Error(),0)
38+
\`\`\`
39+
`
40+
const value = mIt.render(data)
41+
assert.strictEqual(value, `<pre><code class="language-diff:js"><span class="hljs-addition"><span class='hljs-indicator'>+</span><span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Error</span>(),<span class="hljs-number">0</span>)</span>\n</code></pre>\n`)
42+
})
43+
it('Normal Test', () => {
44+
const data = `
45+
\`\`\`js
46+
let time = new Date()
47+
\`\`\`
48+
`
49+
const value = mIt.render(data)
50+
assert.strictEqual(value, `<pre><code class="language-js"><span class="hljs-line"><span class="hljs-keyword">let</span> time = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>()</span>\n</code></pre>\n`)
51+
})
52+
})
53+
54+
describe("Highlight Lines with Diff", async (t) => {
55+
it("Test With Diff (Deletion)", () => {
56+
const code = ` function helloWorld () {
57+
- return 'Hello'
58+
}
59+
`
60+
const { value } = hljsLinesWithDiff.highlight(code, { language: 'diff:js' })
61+
assert.strictEqual(value, `<span class="hljs-line"> <span class="hljs-keyword">function</span> <span class="hljs-title function_">helloWorld</span> (<span class="hljs-params"></span>) {</span>
62+
<span class="hljs-deletion"><span class='hljs-indicator'>-</span> <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello&#x27;</span></span>
63+
<span class="hljs-line"> }</span>\n`)
64+
})
65+
it("Test With Diff (Addition)", () => {
66+
const code = ` function helloWorld () {
67+
+ return 'Hello, world!'
68+
}
69+
`
70+
const { value } = hljsLinesWithDiff.highlight(code, { language: 'diff:js' })
71+
assert.strictEqual(value, `<span class="hljs-line"> <span class="hljs-keyword">function</span> <span class="hljs-title function_">helloWorld</span> (<span class="hljs-params"></span>) {</span>
72+
<span class="hljs-addition"><span class='hljs-indicator'>+</span> <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello, world!&#x27;</span></span>
73+
<span class="hljs-line"> }</span>\n`)
74+
})
75+
it("Normal Test", () => {
76+
const code = ` function helloWorld () {
77+
return 'Hello'
78+
return 'Hello, world!'
79+
}
80+
`
81+
const { value } = hljsLinesWithDiff.highlight(code, { language: 'diff:js' })
82+
assert.strictEqual(value, `<span class="hljs-line"> <span class="hljs-keyword">function</span> <span class="hljs-title function_">helloWorld</span> (<span class="hljs-params"></span>) {</span>
83+
<span class="hljs-line"> <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello&#x27;</span></span>
84+
<span class="hljs-line"> <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello, world!&#x27;</span></span>
85+
<span class="hljs-line"> }</span>\n`)
86+
})
87+
})
88+
89+
describe("Highlight Lines", async (t) => {
90+
it("Test With Diff (Deletion)", () => {
91+
const code = ` function helloWorld () {
92+
- return 'Hello'
93+
}
94+
`
95+
const { value } = hljsLines.highlight(code, { language: 'js' })
96+
assert.strictEqual(value, `<span class="hljs-line"> <span class="hljs-keyword">function</span> <span class="hljs-title function_">helloWorld</span> (<span class="hljs-params"></span>) {</span>
97+
<span class="hljs-line">- <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello&#x27;</span></span>
98+
<span class="hljs-line"> }</span>\n`)
99+
})
100+
it("Test With Diff (Addition)", () => {
101+
const code = ` function helloWorld () {
102+
+ return 'Hello, world!'
103+
}
104+
`
105+
const { value } = hljsLines.highlight(code, { language: 'js' })
106+
assert.strictEqual(value, `<span class="hljs-line"> <span class="hljs-keyword">function</span> <span class="hljs-title function_">helloWorld</span> (<span class="hljs-params"></span>) {</span>
107+
<span class="hljs-line">+ <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello, world!&#x27;</span></span>
108+
<span class="hljs-line"> }</span>\n`)
109+
})
110+
it("Normal Test", () => {
111+
const code = ` function helloWorld () {
112+
return 'Hello'
113+
return 'Hello, world!'
114+
}
115+
`
116+
const { value } = hljsLines.highlight(code, { language: 'js' })
117+
assert.strictEqual(value, `<span class="hljs-line"> <span class="hljs-keyword">function</span> <span class="hljs-title function_">helloWorld</span> (<span class="hljs-params"></span>) {</span>
118+
<span class="hljs-line"> <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello&#x27;</span></span>
119+
<span class="hljs-line"> <span class="hljs-keyword">return</span> <span class="hljs-string">&#x27;Hello, world!&#x27;</span></span>
120+
<span class="hljs-line"> }</span>\n`)
121+
})
122+
})

0 commit comments

Comments
 (0)