/* global QUnit, test, equal */
'use strict'
if (typeof module !== 'undefined' && module.exports) {
var toMarkdown = require('../index')
}
QUnit.module('GitHub Flavored Markdown')
// Test cases are in the format: [html, expectedMarkdown, message]
function runGfmTestCases (testCases) {
for (var i = 0; i < testCases.length; i++) {
var testCase = testCases[i]
equal(toMarkdown(testCase[0], { gfm: true }), testCase[1], testCase[2])
}
}
test('line breaks', function () {
runGfmTestCases([
['
Hello
world
', 'Hello\nworld']
])
})
test('strikethroughs', function () {
runGfmTestCases([
['Lorem ipsum', '~~Lorem ipsum~~', 'del'],
['Lorem ipsum', '~~Lorem ipsum~~', 's'],
['Lorem ipsum', '~~Lorem ipsum~~', 'strike']
])
})
test('task lists', function () {
runGfmTestCases([
[
'',
'* [ ] Check Me!',
'Unchecked inputs'
],
[
'',
'* [x] Checked!',
'Checked inputs'
]
])
})
test('tables', function () {
runGfmTestCases([
[
['',
' ',
' ',
' | Column 1 | ',
' Column 2 | ',
'
',
' ',
' ',
' ',
' | Row 1, Column 1 | ',
' Row 1, Column 2 | ',
'
',
' ',
' | Row 2, Column 1 | ',
' Row 2, Column 2 | ',
'
',
' '].join('\n'),
['| Column 1 | Column 2 |',
'| --- | --- |',
'| Row 1, Column 1 | Row 1, Column 2 |',
'| Row 2, Column 1 | Row 2, Column 2 |'].join('\n'),
'Basic table'
],
[
['',
' ',
' ',
' | Column 1 | ',
' Column 2 | ',
' Column 3 | ',
' Column 4 | ',
'
',
' ',
' ',
' ',
' | Row 1, Column 1 | ',
' Row 1, Column 2 | ',
' Row 1, Column 3 | ',
' Row 1, Column 4 | ',
'
',
' ',
' | Row 2, Column 1 | ',
' Row 2, Column 2 | ',
' Row 2, Column 3 | ',
' Row 2, Column 4 | ',
'
',
' '].join('\n'),
['| Column 1 | Column 2 | Column 3 | Column 4 |',
'| :-- | :-: | --: | --- |',
'| Row 1, Column 1 | Row 1, Column 2 | Row 1, Column 3 | Row 1, Column 4 |',
'| Row 2, Column 1 | Row 2, Column 2 | Row 2, Column 3 | Row 2, Column 4 |'].join('\n'),
'Cell alignment'
],
[
['',
' ',
' ',
' | Column 1 | ',
' Column 2 | ',
' Column 3 | ',
' Column 4 | ',
'
',
' ',
' ',
' ',
' | ',
' Row 1, Column 2 | ',
' Row 1, Column 3 | ',
' Row 1, Column 4 | ',
'
',
' ',
' | Row 2, Column 1 | ',
' | ',
' Row 2, Column 3 | ',
' Row 2, Column 4 | ',
'
',
' ',
' | Row 3, Column 1 | ',
' Row 3, Column 2 | ',
' | ',
' Row 3, Column 4 | ',
'
',
' ',
' | Row 4, Column 1 | ',
' Row 4, Column 2 | ',
' Row 4, Column 3 | ',
' | ',
'
',
' ',
' | ',
' | ',
' | ',
' Row 5, Column 4 | ',
'
',
' '].join('\n'),
['| Column 1 | Column 2 | Column 3 | Column 4 |',
'| :-- | :-: | --: | --- |',
'| | Row 1, Column 2 | Row 1, Column 3 | Row 1, Column 4 |',
'| Row 2, Column 1 | | Row 2, Column 3 | Row 2, Column 4 |',
'| Row 3, Column 1 | Row 3, Column 2 | | Row 3, Column 4 |',
'| Row 4, Column 1 | Row 4, Column 2 | Row 4, Column 3 | |',
'| | | | Row 5, Column 4 |'
].join('\n'),
'Empty cells'
]
])
})
test('fenced code blocks', function () {
runGfmTestCases([
[
['This is a regular paragraph.',
'',
'<table>',
' <tr>',
' <td>Foo</td>',
' </tr>',
'</table>',
'',
'This is another regular paragraph.',
'
'].join('\n'),
['```',
'This is a regular paragraph.',
'',
'',
'',
'This is another regular paragraph.',
'',
'```'].join('\n')
]
])
})
test('syntax highlighting', function () {
runGfmTestCases([
[
['<table>',
' <tr>',
' <td>Foo</td>',
' </tr>',
'</table> '].join('\n'),
['```html',
'',
'```'].join('\n'),
'HTML'
]
])
})