diff options
Diffstat (limited to 'packages/integrations/mdx/test')
3 files changed, 68 insertions, 0 deletions
diff --git a/packages/integrations/mdx/test/fixtures/mdx-get-static-paths/src/content/1.mdx b/packages/integrations/mdx/test/fixtures/mdx-get-static-paths/src/content/1.mdx new file mode 100644 index 000000000..7ad64edfe --- /dev/null +++ b/packages/integrations/mdx/test/fixtures/mdx-get-static-paths/src/content/1.mdx @@ -0,0 +1,5 @@ +--- +one: hello +slug: one +--- +First mdx file diff --git a/packages/integrations/mdx/test/fixtures/mdx-get-static-paths/src/pages/[slug].astro b/packages/integrations/mdx/test/fixtures/mdx-get-static-paths/src/pages/[slug].astro new file mode 100644 index 000000000..fe453a8bf --- /dev/null +++ b/packages/integrations/mdx/test/fixtures/mdx-get-static-paths/src/pages/[slug].astro @@ -0,0 +1,34 @@ +--- +export const getStaticPaths = async () => { + const content = await Astro.glob('../content/*.mdx'); + + return content + .filter((page) => !page.frontmatter.draft) // skip drafts + .map(({ default: MdxContent, frontmatter, url, file }) => { + return { + params: { slug: frontmatter.slug || "index" }, + props: { + MdxContent, + file, + frontmatter, + url + } + } + }) +} + +const { MdxContent, frontmatter, url, file } = Astro.props; +--- + +<html> + <head> + <title>Page</title> + </head> + <body> + <MdxContent /> + + <div id="one">{frontmatter.one}</div> + <div id="url">{url}</div> + <div id="file">{file}</div> + </body> +</html> diff --git a/packages/integrations/mdx/test/mdx-get-static-paths.test.js b/packages/integrations/mdx/test/mdx-get-static-paths.test.js new file mode 100644 index 000000000..f5d48922c --- /dev/null +++ b/packages/integrations/mdx/test/mdx-get-static-paths.test.js @@ -0,0 +1,29 @@ +import mdx from '@astrojs/mdx'; + +import { expect } from 'chai'; +import { loadFixture } from '../../../astro/test/test-utils.js'; +import * as cheerio from 'cheerio'; + +const FIXTURE_ROOT = new URL('./fixtures/mdx-get-static-paths', import.meta.url); + +describe('getStaticPaths', () => { + /** @type {import('astro/test/test-utils').Fixture} */ + let fixture; + before(async () => { + fixture = await loadFixture({ + root: FIXTURE_ROOT, + integrations: [mdx()], + }); + await fixture.build(); + }); + + it('Provides file and url', async () => { + const html = await fixture.readFile('/one/index.html'); + + const $ = cheerio.load(html); + expect($('p').text()).to.equal('First mdx file'); + expect($('#one').text()).to.equal('hello', 'Frontmatter included'); + expect($('#url').text()).to.equal('/src/content/1.mdx', 'url is included'); + expect($('#file').text()).to.contain('fixtures/mdx-get-static-paths/src/content/1.mdx', 'file is included'); + }); +}); |