diff options
author | 2022-10-24 14:27:37 -0400 | |
---|---|---|
committer | 2022-10-24 14:27:37 -0400 | |
commit | 308e565ad39957e3353d72ca5d3bbce1a1b45008 (patch) | |
tree | c78fb82111092e74013c2b7091ec6b0ee85fee86 /packages/integrations/mdx/test | |
parent | 61f7e16491e97d0e396dfe25647d945d765fbb77 (diff) | |
download | astro-308e565ad39957e3353d72ca5d3bbce1a1b45008.tar.gz astro-308e565ad39957e3353d72ca5d3bbce1a1b45008.tar.zst astro-308e565ad39957e3353d72ca5d3bbce1a1b45008.zip |
[MDX] Support `recmaPlugins` config (#5146)
* feat: support recma plugins
* chore: add `test:match` to MDX
* chore: changeset
* docs: add recmaPlugins to README
Diffstat (limited to 'packages/integrations/mdx/test')
-rw-r--r-- | packages/integrations/mdx/test/fixtures/mdx-plugins/src/pages/with-plugins.mdx | 4 | ||||
-rw-r--r-- | packages/integrations/mdx/test/mdx-plugins.test.js | 38 |
2 files changed, 42 insertions, 0 deletions
diff --git a/packages/integrations/mdx/test/fixtures/mdx-plugins/src/pages/with-plugins.mdx b/packages/integrations/mdx/test/fixtures/mdx-plugins/src/pages/with-plugins.mdx index fe9cac3ee..fcd8ae181 100644 --- a/packages/integrations/mdx/test/fixtures/mdx-plugins/src/pages/with-plugins.mdx +++ b/packages/integrations/mdx/test/fixtures/mdx-plugins/src/pages/with-plugins.mdx @@ -1,3 +1,5 @@ +export let recmaPluginWorking = false + # TOC test ## Table of contents @@ -17,3 +19,5 @@ Oh cool, more text! ## Section 2 And section 2, with a hyperlink to check GFM is preserved: https://handle-me-gfm.com + +<div data-recma-plugin-works={recmaPluginWorking}></div> diff --git a/packages/integrations/mdx/test/mdx-plugins.test.js b/packages/integrations/mdx/test/mdx-plugins.test.js index 4cbfaae3e..a077fde45 100644 --- a/packages/integrations/mdx/test/mdx-plugins.test.js +++ b/packages/integrations/mdx/test/mdx-plugins.test.js @@ -4,6 +4,7 @@ import { expect } from 'chai'; import { parseHTML } from 'linkedom'; import { loadFixture } from '../../../astro/test/test-utils.js'; import remarkToc from 'remark-toc'; +import { visit as estreeVisit } from 'estree-util-visit'; const FIXTURE_ROOT = new URL('./fixtures/mdx-plugins/', import.meta.url); const FILE = '/with-plugins/index.html'; @@ -164,6 +165,21 @@ describe('MDX plugins', () => { expect(selectGfmLink(document)).to.be.null; expect(selectRemarkExample(document)).to.be.null; }); + + it('supports custom recma plugins', async () => { + const fixture = await buildFixture({ + integrations: [ + mdx({ + recmaPlugins: [recmaExamplePlugin], + }), + ], + }); + + const html = await fixture.readFile(FILE); + const { document } = parseHTML(html); + + expect(selectRecmaExample(document)).to.not.be.null; + }); }); async function buildFixture(config) { @@ -194,6 +210,24 @@ function rehypeExamplePlugin() { }; } +function recmaExamplePlugin() { + return (tree) => { + estreeVisit(tree, (node) => { + if ( + node.type === 'VariableDeclarator' && + node.id.name === 'recmaPluginWorking' && + node.init?.type === 'Literal' + ) { + node.init = { + ...(node.init ?? {}), + value: true, + raw: 'true', + }; + } + }); + }; +} + function selectTocLink(document) { return document.querySelector('ul a[href="#section-1"]'); } @@ -209,3 +243,7 @@ function selectRemarkExample(document) { function selectRehypeExample(document) { return document.querySelector('div[data-rehype-plugin-works]'); } + +function selectRecmaExample(document) { + return document.querySelector('div[data-recma-plugin-works]'); +} |