179 lines
5.1 KiB
TypeScript
179 lines
5.1 KiB
TypeScript
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',
|
|
);
|
|
});
|
|
});
|