summaryrefslogtreecommitdiff
path: root/packages/integrations/markdoc/test
diff options
context:
space:
mode:
authorGravatar AndyClifford <70119888+AndyClifford@users.noreply.github.com> 2023-10-24 20:40:54 +1300
committerGravatar GitHub <noreply@github.com> 2023-10-24 08:40:54 +0100
commit73b8d60f8c3eeae74035202b0ea0d4848e736c7d (patch)
treefd39ece28ab7ac3df82e37b2d11c37874d0ce57f /packages/integrations/markdoc/test
parent341ef6578528a00f89bf6da5e4243b0fde272816 (diff)
downloadastro-73b8d60f8c3eeae74035202b0ea0d4848e736c7d.tar.gz
astro-73b8d60f8c3eeae74035202b0ea0d4848e736c7d.tar.zst
astro-73b8d60f8c3eeae74035202b0ea0d4848e736c7d.zip
feat(markdoc): allowIndentation integration option (#8802)
Diffstat (limited to 'packages/integrations/markdoc/test')
-rw-r--r--packages/integrations/markdoc/test/fixtures/render-with-indented-components/astro.config.mjs7
-rw-r--r--packages/integrations/markdoc/test/fixtures/render-with-indented-components/markdoc.config.ts26
-rw-r--r--packages/integrations/markdoc/test/fixtures/render-with-indented-components/package.json9
-rw-r--r--packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/Code.astro12
-rw-r--r--packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/CustomMarquee.astro1
-rw-r--r--packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/content/blog/with-indented-components.mdoc24
-rw-r--r--packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/pages/index.astro19
-rw-r--r--packages/integrations/markdoc/test/render.test.js42
8 files changed, 140 insertions, 0 deletions
diff --git a/packages/integrations/markdoc/test/fixtures/render-with-indented-components/astro.config.mjs b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/astro.config.mjs
new file mode 100644
index 000000000..c711e7cb6
--- /dev/null
+++ b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/astro.config.mjs
@@ -0,0 +1,7 @@
+import { defineConfig } from 'astro/config';
+import markdoc from '@astrojs/markdoc';
+
+// https://astro.build/config
+export default defineConfig({
+ integrations: [markdoc({ ignoreIndentation: true })],
+});
diff --git a/packages/integrations/markdoc/test/fixtures/render-with-indented-components/markdoc.config.ts b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/markdoc.config.ts
new file mode 100644
index 000000000..ffb264ed8
--- /dev/null
+++ b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/markdoc.config.ts
@@ -0,0 +1,26 @@
+import { defineMarkdocConfig, component } from '@astrojs/markdoc/config';
+
+export default defineMarkdocConfig({
+ nodes: {
+ fence: {
+ render: component('./src/components/Code.astro'),
+ attributes: {
+ language: { type: String },
+ content: { type: String },
+ },
+ },
+ },
+ tags: {
+ 'marquee-element': {
+ render: component('./src/components/CustomMarquee.astro'),
+ attributes: {
+ direction: {
+ type: String,
+ default: 'left',
+ matches: ['left', 'right', 'up', 'down'],
+ errorLevel: 'critical',
+ },
+ },
+ },
+ },
+})
diff --git a/packages/integrations/markdoc/test/fixtures/render-with-indented-components/package.json b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/package.json
new file mode 100644
index 000000000..3c1d0a7b5
--- /dev/null
+++ b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "@test/markdoc-render-with-indented-components",
+ "version": "0.0.0",
+ "private": true,
+ "dependencies": {
+ "@astrojs/markdoc": "workspace:*",
+ "astro": "workspace:*"
+ }
+}
diff --git a/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/Code.astro b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/Code.astro
new file mode 100644
index 000000000..18bf1399f
--- /dev/null
+++ b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/Code.astro
@@ -0,0 +1,12 @@
+---
+import { Code } from 'astro/components';
+
+type Props = {
+ content: string;
+ language: string;
+}
+
+const { content, language } = Astro.props as Props;
+---
+
+<Code lang={language} code={content} />
diff --git a/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/CustomMarquee.astro b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/CustomMarquee.astro
new file mode 100644
index 000000000..3108b9973
--- /dev/null
+++ b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/components/CustomMarquee.astro
@@ -0,0 +1 @@
+<marquee data-custom-marquee {...Astro.props}><slot /></marquee>
diff --git a/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/content/blog/with-indented-components.mdoc b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/content/blog/with-indented-components.mdoc
new file mode 100644
index 000000000..a52b35fc4
--- /dev/null
+++ b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/content/blog/with-indented-components.mdoc
@@ -0,0 +1,24 @@
+---
+title: Post with indented components
+---
+
+## Post with indented components
+
+This uses a custom marquee component with a shortcode:
+
+{% marquee-element direction="right" %}
+ I'm a marquee too!
+
+ {% marquee-element direction="right" %}
+ I'm an indented marquee!
+
+ ### I am an h3!
+ {% /marquee-element %}
+
+ And a nested code block:
+
+ ```js
+ const isRenderedWithShiki = true;
+ ```
+{% /marquee-element %}
+
diff --git a/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/pages/index.astro b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/pages/index.astro
new file mode 100644
index 000000000..0ae7ed4c9
--- /dev/null
+++ b/packages/integrations/markdoc/test/fixtures/render-with-indented-components/src/pages/index.astro
@@ -0,0 +1,19 @@
+---
+import { getEntryBySlug } from "astro:content";
+
+const post = await getEntryBySlug('blog', 'with-indented-components');
+const { Content } = await post.render();
+---
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>Content</title>
+</head>
+<body>
+ <Content />
+</body>
+</html>
diff --git a/packages/integrations/markdoc/test/render.test.js b/packages/integrations/markdoc/test/render.test.js
index 86ffcb707..97c441b85 100644
--- a/packages/integrations/markdoc/test/render.test.js
+++ b/packages/integrations/markdoc/test/render.test.js
@@ -46,6 +46,19 @@ describe('Markdoc - render', () => {
await server.stop();
});
+ it('renders content - with indented components', async () => {
+ const fixture = await getFixture('render-with-indented-components');
+ const server = await fixture.startDevServer();
+
+ const res = await fixture.fetch('/');
+ const html = await res.text();
+
+ renderIndentedComponentsChecks(html);
+
+ await server.stop();
+
+ });
+
it('renders content - with `render: null` in document', async () => {
const fixture = await getFixture('render-null');
const server = await fixture.startDevServer();
@@ -87,6 +100,15 @@ describe('Markdoc - render', () => {
renderComponentsChecks(html);
});
+ it('renders content - with indented components', async () => {
+ const fixture = await getFixture('render-with-indented-components');
+ await fixture.build();
+
+ const html = await fixture.readFile('/index.html');
+
+ renderIndentedComponentsChecks(html);
+ });
+
it('renders content - with `render: null` in document', async () => {
const fixture = await getFixture('render-null');
await fixture.build();
@@ -126,6 +148,26 @@ function renderComponentsChecks(html) {
}
/** @param {string} html */
+function renderIndentedComponentsChecks(html) {
+ const { document } = parseHTML(html);
+ const h2 = document.querySelector('h2');
+ expect(h2.textContent).to.equal('Post with indented components');
+
+ // Renders custom shortcode components
+ const marquees = document.querySelectorAll('marquee');
+ expect(marquees.length).to.equal(2);
+
+ // Renders h3
+ const h3 = document.querySelector('h3');
+ expect(h3.textContent).to.equal('I am an h3!');
+
+ // Renders Astro Code component
+ const pre = document.querySelector('pre');
+ expect(pre).to.not.be.null;
+ expect(pre.className).to.equal('astro-code github-dark');
+}
+
+/** @param {string} html */
function renderConfigChecks(html) {
const { document } = parseHTML(html);
const h2 = document.querySelector('h2');