import { parseHTML } from 'linkedom'; import { expect } from 'chai'; import Markdoc from '@markdoc/markdoc'; import shiki from '../dist/extensions/shiki.js'; import prism from '../dist/extensions/prism.js'; import { setupConfig } from '../dist/runtime.js'; import { isHTMLString } from 'astro/runtime/server/index.js'; const entry = ` \`\`\`ts const highlighting = true; \`\`\` \`\`\`css .highlighting { color: red; } \`\`\` `; describe('Markdoc - syntax highlighting', () => { describe('shiki', () => { it('transforms with defaults', async () => { const ast = Markdoc.parse(entry); const content = Markdoc.transform(ast, await getConfigExtendingShiki()); expect(content.children).to.have.lengthOf(2); for (const codeBlock of content.children) { expect(isHTMLString(codeBlock)).to.be.true; const pre = parsePreTag(codeBlock); expect(pre.classList).to.include('astro-code'); expect(pre.classList).to.include('github-dark'); } }); it('transforms with `theme` property', async () => { const ast = Markdoc.parse(entry); const content = Markdoc.transform( ast, await getConfigExtendingShiki({ theme: 'dracula', }) ); expect(content.children).to.have.lengthOf(2); for (const codeBlock of content.children) { expect(isHTMLString(codeBlock)).to.be.true; const pre = parsePreTag(codeBlock); expect(pre.classList).to.include('astro-code'); expect(pre.classList).to.include('dracula'); } }); it('transforms with `wrap` property', async () => { const ast = Markdoc.parse(entry); const content = Markdoc.transform( ast, await getConfigExtendingShiki({ wrap: true, }) ); expect(content.children).to.have.lengthOf(2); for (const codeBlock of content.children) { expect(isHTMLString(codeBlock)).to.be.true; const pre = parsePreTag(codeBlock); expect(pre.getAttribute('style')).to.include('white-space: pre-wrap'); expect(pre.getAttribute('style')).to.include('word-wrap: break-word'); } }); }); describe('prism', () => { it('transforms', async () => { const ast = Markdoc.parse(entry); const config = await setupConfig({ extends: [prism()], }); const content = Markdoc.transform(ast, config); expect(content.children).to.have.lengthOf(2); const [tsBlock, cssBlock] = content.children; expect(isHTMLString(tsBlock)).to.be.true; expect(isHTMLString(cssBlock)).to.be.true; const preTs = parsePreTag(tsBlock); expect(preTs.classList).to.include('language-ts'); const preCss = parsePreTag(cssBlock); expect(preCss.classList).to.include('language-css'); }); }); }); /** * @param {import('astro').ShikiConfig} config * @returns {import('../src/config.js').AstroMarkdocConfig} */ async function getConfigExtendingShiki(config) { return await setupConfig({ extends: [shiki(config)], }); } /** * @param {string} html * @returns {HTMLPreElement} */ function parsePreTag(html) { const { document } = parseHTML(html); const pre = document.querySelector('pre'); expect(pre).to.exist; return pre; } elemetry'>disable-telemetry Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/docs/public (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2021-11-19Version Packages (next) (#1907)astro@0.21.0-next.10Gravatar github-actions[bot] 23-21/+28
2021-11-19Remove further dependence on vite package (#1906)Gravatar Matthew Phillips 3-5/+9
2021-11-19Version Packages (next) (#1904)astro@0.21.0-next.9Gravatar github-actions[bot] 23-21/+30
2021-11-19Remove OSX \x00 workaround (#1901)Gravatar Matthew Phillips 2-5/+5
2021-11-19Resolve vite client modules to vendored vite (#1903)Gravatar Matthew Phillips 2-2/+7
2021-11-19[ci] yarn formatGravatar matthewp 1-3/+3
2021-11-19Add Debug tests (#1882)Gravatar Matthew Phillips 4-0/+62
2021-11-19[ci] collect statsGravatar FredKSchott 1-0/+1
2021-11-19Version Packages (next) (#1881)astro@0.21.0-next.8@astrojs/renderer-vue@0.2.0-next.2Gravatar github-actions[bot] 25-23/+42
2021-11-18Improve HMR (#1896)Gravatar Drew Powers 2-10/+18
2021-11-18update depsGravatar Fred K. Schott 5-352/+65
2021-11-18fix #1778Gravatar Fred K. Schott 2-1/+8
2021-11-18Update compiler (#1869)Gravatar Nate Moore 3-11/+6
2021-11-18remove unused remark dependency (#1894)Gravatar Fred K. Schott 2-245/+13
2021-11-18Improve error messages (#1875)Gravatar Drew Powers 39-61/+448
2021-11-18pin astro compiler to older versionGravatar Fred K. Schott 2-5/+5
2021-11-18Update yarn.lock to reflect the state of the package.json files (#1892)Gravatar Jonathan Neal 5-1300/+1000
2021-11-19[ci] yarn formatGravatar FredKSchott 1-5/+3