import toMarkdown from 'discourse/lib/to-markdown';
QUnit.module("lib:to-markdown");
QUnit.test("converts styles between normal words", assert => {
const html = `Line with stylesbetween words.`;
const markdown = `Line with ~~styles~~ **_between_** words.`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("converts inline nested styles", assert => {
let html = `Italicised line with some randombold words.`;
let markdown = `_Italicised line with **some random** **bold** words._`;
assert.equal(toMarkdown(html), markdown);
html = `Italicised line
with some
randombold words.`;
markdown = `Italicised line\n with some\n random ~~bold~~ words.`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("converts a link", assert => {
const html = `Discourse`;
const markdown = `[Discourse](https://discourse.org)`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("put raw URL instead of converting the link", assert => {
let url = "https://discourse.org";
const html = () => `${url}`;
assert.equal(toMarkdown(html()), url);
url = "discourse.org/t/topic-slug/1";
assert.equal(toMarkdown(html()), url);
});
QUnit.test("skip empty link", assert => {
assert.equal(toMarkdown(``), "");
});
QUnit.test("converts heading tags", assert => {
const html = `
Heading 1
Heading 2
\t
Heading 3
Heading 4
Heading 5
Heading 6
`;
const markdown = `# Heading 1\n\n## Heading 2\n\n### Heading 3\n\n#### Heading 4\n\n##### Heading 5\n\n###### Heading 6`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("converts ul and ol list tags", assert => {
const html = `
Item 1
Item 2
Sub Item 1
Sub Item 2
Sub Sub Item 1
Sub Sub Item 2
Item 3
`;
const markdown = `* Item 1\n* Item 2\n\n * Sub Item 1\n * Sub Item 2\n\n * Sub _Sub_ Item 1\n * Sub **Sub** Item 2\n\n* Item 3`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("stripes unwanted inline tags", assert => {
const html = `
Lorem ipsum dolor sit amet, consecteturelit.
Ut minim veniam, laboris ut aliquip ex ea commodo.
`;
const markdown = `Lorem ipsum dolor sit amet, consectetur ~~elit.~~\n\nUt minim veniam, quis nostrud laboris ut aliquip ex ea commodo.`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("converts table as readable", assert => {
const html = `Discourse Avenuelaboris
Heading 1
Head 2
Lorem
ipsum
dolor
sit amet
`;
const markdown = `Discourse Avenue\n\n**laboris**\n\nHeading 1 Head 2\n\nLorem ipsum\n**dolor** _sit amet_`;
assert.equal(toMarkdown(html), markdown);
});
QUnit.test("converts img tag", assert => {
const url = "https://example.com/image.png";
let html = ``;
assert.equal(toMarkdown(html), ``);
html = `
`;
assert.equal(toMarkdown(html), ``);
html = ``;
assert.equal(toMarkdown(html), `[](http://example.com)`);
html = `description `;
assert.equal(toMarkdown(html), `[description ](http://example.com)`);
html = ``;
assert.equal(toMarkdown(html), "");
html = ``;
assert.equal(toMarkdown(html), ``);
});