225 lines
2.7 KiB
TypeScript
225 lines
2.7 KiB
TypeScript
|
import MarkdownIt from "markdown-it";
|
||
|
import { describe, expect, it } from "vitest";
|
||
|
|
||
|
import { tabs } from "../../src/node/markdown-it/tabs.js";
|
||
|
|
||
|
const markdownIt = MarkdownIt({ linkify: true }).use(tabs);
|
||
|
|
||
|
describe("tabs", () => {
|
||
|
it("Should render single block", () => {
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
|
||
|
@tab js
|
||
|
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
@tab js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
});
|
||
|
|
||
|
it("Should render multiple block", () => {
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
|
||
|
@tab js
|
||
|
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
@tab ts
|
||
|
|
||
|
\`\`\`ts
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
@tab js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
@tab ts
|
||
|
\`\`\`ts
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
});
|
||
|
|
||
|
it("Should support tabs id", () => {
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs#event
|
||
|
|
||
|
@tab js
|
||
|
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs#event-id
|
||
|
@tab js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs#id with space
|
||
|
@tab js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs # id starts and having space in the end
|
||
|
@tab js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
});
|
||
|
|
||
|
it("Should support active", () => {
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
|
||
|
@tab:active js
|
||
|
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
@tab:active js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
|
||
|
@tab js
|
||
|
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
@tab:active ts
|
||
|
|
||
|
\`\`\`ts
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
@tab js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
@tab:active ts
|
||
|
\`\`\`ts
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
});
|
||
|
|
||
|
it("should ignore other items", () => {
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
|
||
|
\`\`\`coffee
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
@tab:active js
|
||
|
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
\`\`\`ts
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
|
||
|
expect(
|
||
|
markdownIt.render(`
|
||
|
::: tabs
|
||
|
\`\`\`coffee
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
@tab:active js
|
||
|
\`\`\`js
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
\`\`\`ts
|
||
|
const a = 1;
|
||
|
\`\`\`
|
||
|
:::
|
||
|
`),
|
||
|
).toMatchSnapshot();
|
||
|
});
|
||
|
});
|