import toMarkdown from 'discourse/lib/to-markdown'; QUnit.module("lib:to-markdown"); QUnit.test("converts styles between normal words", assert => { const html = `Line with styles between 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 random bold words.`; let markdown = `_Italicised line with **some random** **bold** words._`; assert.equal(toMarkdown(html), markdown); html = `Italicised line with some random bold 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 = ` `; 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, consectetur elit.

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 Avenue
laboris
Heading 1Head 2
Loremipsum
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), `![](${url})`); html = `
description
`; assert.equal(toMarkdown(html), `![description](${url})`); html = `description`; assert.equal(toMarkdown(html), `[![description](${url})](http://example.com)`); html = `description `; assert.equal(toMarkdown(html), `[description ![](${url})](http://example.com)`); html = `description`; assert.equal(toMarkdown(html), ""); html = `description`; assert.equal(toMarkdown(html), `![description](${url})`); });