* DEV: Add test case for syntax highlight of complex HTML The commit685e0daupgrade HighlightJS to version 11, which deprecates syntax highlight of complex HTML elements. See https://github.com/highlightjs/highlight.js/issues/2889 This brought a regression of syntax highlighting of GitHub oneboxes, which was fixed in09cec7d. This commit adds a test case to prevent future regressions like this one. * fix test and warning
61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
import highlightSyntax from "discourse/lib/highlight-syntax";
|
|
import { module, test } from "qunit";
|
|
import { fixture } from "discourse/tests/helpers/qunit-helpers";
|
|
|
|
let siteSettings = { autohighlight_all_code: true },
|
|
session = {
|
|
highlightJsPath: "/assets/highlightjs/highlight-test-bundle.min.js",
|
|
};
|
|
|
|
module("Unit | Utility | highlight-syntax", function () {
|
|
test("highlighting code", async function (assert) {
|
|
fixture().innerHTML = `
|
|
<pre>
|
|
<code class="language-ruby">
|
|
def code
|
|
puts 1 + 2
|
|
end
|
|
</code>
|
|
</pre>
|
|
`;
|
|
|
|
await highlightSyntax(fixture(), siteSettings, session);
|
|
|
|
assert.strictEqual(
|
|
document
|
|
.querySelector("code.language-ruby.hljs .hljs-keyword")
|
|
.innerText.trim(),
|
|
"def"
|
|
);
|
|
});
|
|
|
|
test("highlighting code with HTML intermingled", async function (assert) {
|
|
fixture().innerHTML = `
|
|
<pre>
|
|
<code class="language-ruby">
|
|
<ol>
|
|
<li>def code</li>
|
|
<li> puts 1 + 2</li>
|
|
<li>end</li>
|
|
</ol>
|
|
</code>
|
|
</pre>
|
|
`;
|
|
|
|
await highlightSyntax(fixture(), siteSettings, session);
|
|
|
|
assert.strictEqual(
|
|
document
|
|
.querySelector("code.language-ruby.hljs .hljs-keyword")
|
|
.innerText.trim(),
|
|
"def"
|
|
);
|
|
|
|
// Checks if HTML structure was preserved
|
|
assert.strictEqual(
|
|
document.querySelectorAll("code.language-ruby.hljs ol li").length,
|
|
3
|
|
);
|
|
});
|
|
});
|