recipe/packages/md-enhance/__tests__/unit/autolink.spec.ts

179 lines
5.1 KiB
TypeScript
Raw Normal View History

2024-08-18 19:16:25 +08:00
import MarkdownIt from "markdown-it";
import { describe, expect, it } from "vitest";
describe("autolink", () => {
const markdownIt = MarkdownIt();
markdownIt.options.linkify = true;
it("Should resolve bare link", () => {
expect(markdownIt.render(`https://example.com`)).toBe(
'<p><a href="https://example.com">https://example.com</a></p>\n',
);
expect(markdownIt.render(`https://example.com/a/`)).toBe(
'<p><a href="https://example.com/a/">https://example.com/a/</a></p>\n',
);
expect(markdownIt.render(`https://example.com/a/b.html`)).toBe(
'<p><a href="https://example.com/a/b.html">https://example.com/a/b.html</a></p>\n',
);
expect(
markdownIt.render(`
https://example.com
`),
).toBe('<p><a href="https://example.com">https://example.com</a></p>\n');
expect(
markdownIt.render(`
https://example.com/a/
`),
).toBe(
'<p><a href="https://example.com/a/">https://example.com/a/</a></p>\n',
);
expect(
markdownIt.render(`
https://example.com/a/b.html
`),
).toBe(
'<p><a href="https://example.com/a/b.html">https://example.com/a/b.html</a></p>\n',
);
});
it("Should resolve auto link", () => {
expect(markdownIt.render(`<https://example.com>`)).toBe(
'<p><a href="https://example.com">https://example.com</a></p>\n',
);
expect(markdownIt.render(`<https://example.com/a/>`)).toBe(
'<p><a href="https://example.com/a/">https://example.com/a/</a></p>\n',
);
expect(markdownIt.render(`<https://example.com/a/b.html>`)).toBe(
'<p><a href="https://example.com/a/b.html">https://example.com/a/b.html</a></p>\n',
);
expect(
markdownIt.render(`
<https://example.com>
`),
).toBe('<p><a href="https://example.com">https://example.com</a></p>\n');
expect(
markdownIt.render(`
<https://example.com/a/>
`),
).toBe(
'<p><a href="https://example.com/a/">https://example.com/a/</a></p>\n',
);
expect(
markdownIt.render(`
<https://example.com/a/b.html>
`),
).toBe(
'<p><a href="https://example.com/a/b.html">https://example.com/a/b.html</a></p>\n',
);
});
it("Should resolve bare link in text", () => {
expect(
markdownIt.render(`Please open https://example.com for more details`),
).toBe(
'<p>Please open <a href="https://example.com">https://example.com</a> for more details</p>\n',
);
expect(
markdownIt.render(`Please open https://example.com/a/ for more details`),
).toBe(
'<p>Please open <a href="https://example.com/a/">https://example.com/a/</a> for more details</p>\n',
);
expect(
markdownIt.render(
`Please open https://example.com/a/b.html for more details`,
),
).toBe(
'<p>Please open <a href="https://example.com/a/b.html">https://example.com/a/b.html</a> for more details</p>\n',
);
expect(
markdownIt.render(`
Please open https://example.com for more details
`),
).toBe(
'<p>Please open <a href="https://example.com">https://example.com</a> for more details</p>\n',
);
expect(
markdownIt.render(`
Please open https://example.com/a/ for more details
`),
).toBe(
'<p>Please open <a href="https://example.com/a/">https://example.com/a/</a> for more details</p>\n',
);
expect(
markdownIt.render(
`
Please open https://example.com/a/b.html for more details
`,
),
).toBe(
'<p>Please open <a href="https://example.com/a/b.html">https://example.com/a/b.html</a> for more details</p>\n',
);
});
it("Should resolve auto link in text", () => {
expect(
markdownIt.render(`Please open <https://example.com> for more details`),
).toBe(
'<p>Please open <a href="https://example.com">https://example.com</a> for more details</p>\n',
);
expect(
markdownIt.render(
`Please open <https://example.com/a/> for more details`,
),
).toBe(
'<p>Please open <a href="https://example.com/a/">https://example.com/a/</a> for more details</p>\n',
);
expect(
markdownIt.render(
`Please open <https://example.com/a/b.html> for more details`,
),
).toBe(
'<p>Please open <a href="https://example.com/a/b.html">https://example.com/a/b.html</a> for more details</p>\n',
);
expect(
markdownIt.render(`
Please open <https://example.com> for more details
`),
).toBe(
'<p>Please open <a href="https://example.com">https://example.com</a> for more details</p>\n',
);
expect(
markdownIt.render(`
Please open <https://example.com/a/> for more details
`),
).toBe(
'<p>Please open <a href="https://example.com/a/">https://example.com/a/</a> for more details</p>\n',
);
expect(
markdownIt.render(
`
Please open <https://example.com/a/b.html> for more details
`,
),
).toBe(
'<p>Please open <a href="https://example.com/a/b.html">https://example.com/a/b.html</a> for more details</p>\n',
);
});
});