github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/themes/wind/static/libs/to-markdown/test/gfm-test.js (about) 1 /* global QUnit, test, equal */ 2 3 'use strict'; 4 5 if (typeof module !== 'undefined' && module.exports) { 6 var toMarkdown = require('../index'); 7 } 8 9 QUnit.module('GitHub Flavored Markdown'); 10 11 // Test cases are in the format: [html, expectedMarkdown, message]; 12 function runGfmTestCases(testCases) { 13 for (var i = 0; i < testCases.length; i++) { 14 var testCase = testCases[i]; 15 equal(toMarkdown(testCase[0], { gfm: true }), testCase[1], testCase[2]); 16 } 17 } 18 19 test('line breaks', function () { 20 runGfmTestCases([ 21 ['<p>Hello<br>world</p>', 'Hello\nworld'] 22 ]); 23 }); 24 25 test('strikethroughs', function() { 26 runGfmTestCases([ 27 ['<del>Lorem ipsum</del>', '~~Lorem ipsum~~', 'del'], 28 ['<s>Lorem ipsum</s>', '~~Lorem ipsum~~', 's'], 29 ['<strike>Lorem ipsum</strike>', '~~Lorem ipsum~~', 'strike'] 30 ]); 31 }); 32 33 test('task lists', function() { 34 runGfmTestCases([ 35 [ 36 '<ul><li><input type=checkbox>Check Me!</li></ul>', 37 '* [ ] Check Me!', 38 'Unchecked inputs' 39 ], 40 [ 41 '<ul><li><input type=checkbox checked>Checked!</li></ul>', 42 '* [x] Checked!', 43 'Checked inputs' 44 ] 45 ]); 46 }); 47 48 test('tables', function() { 49 runGfmTestCases([ 50 [ 51 ['<table>', 52 ' <thead>', 53 ' <tr>', 54 ' <th>Column 1</th>', 55 ' <th>Column 2</th>', 56 ' </tr>', 57 ' </thead>', 58 ' <tbody>', 59 ' <tr>', 60 ' <td>Row 1, Column 1</td>', 61 ' <td>Row 1, Column 2</td>', 62 ' </tr>', 63 ' <tr>', 64 ' <td>Row 2, Column 1</td>', 65 ' <td>Row 2, Column 2</td>', 66 ' </tr>', 67 ' </tbody', 68 '</table>'].join('\n'), 69 70 ['| Column 1 | Column 2 |', 71 '| --- | --- |', 72 '| Row 1, Column 1 | Row 1, Column 2 |', 73 '| Row 2, Column 1 | Row 2, Column 2 |'].join('\n'), 74 75 'Basic table' 76 ], 77 [ 78 ['<table>', 79 ' <thead>', 80 ' <tr>', 81 ' <th align="left">Column 1</th>', 82 ' <th align="center">Column 2</th>', 83 ' <th align="right">Column 3</th>', 84 ' <th align="foo">Column 4</th>', 85 ' </tr>', 86 ' </thead>', 87 ' <tbody>', 88 ' <tr>', 89 ' <td>Row 1, Column 1</td>', 90 ' <td>Row 1, Column 2</td>', 91 ' <td>Row 1, Column 3</td>', 92 ' <td>Row 1, Column 4</td>', 93 ' </tr>', 94 ' <tr>', 95 ' <td>Row 2, Column 1</td>', 96 ' <td>Row 2, Column 2</td>', 97 ' <td>Row 2, Column 3</td>', 98 ' <td>Row 2, Column 4</td>', 99 ' </tr>', 100 ' </tbody', 101 '</table>'].join('\n'), 102 103 ['| Column 1 | Column 2 | Column 3 | Column 4 |', 104 '| :-- | :-: | --: | --- |', 105 '| Row 1, Column 1 | Row 1, Column 2 | Row 1, Column 3 | Row 1, Column 4 |', 106 '| Row 2, Column 1 | Row 2, Column 2 | Row 2, Column 3 | Row 2, Column 4 |'].join('\n'), 107 108 'Cell alignment' 109 ] 110 ]); 111 }); 112 113 test('fenced code blocks', function () { 114 runGfmTestCases([ 115 [ 116 ['<pre><code>This is a regular paragraph.', 117 '', 118 '<table>', 119 ' <tr>', 120 ' <td>Foo</td>', 121 ' </tr>', 122 '</table>', 123 '', 124 'This is another regular paragraph.', 125 '</code></pre>'].join('\n'), 126 127 ['```', 128 'This is a regular paragraph.', 129 '', 130 '<table>', 131 ' <tr>', 132 ' <td>Foo</td>', 133 ' </tr>', 134 '</table>', 135 '', 136 'This is another regular paragraph.', 137 '', 138 '```'].join('\n') 139 ] 140 ]); 141 }); 142 143 test('syntax highlighting', function () { 144 runGfmTestCases([ 145 [ 146 ['<div class="highlight highlight-html"><pre><<span class="pl-ent">table</span>>', 147 ' <<span class="pl-ent">tr</span>>', 148 ' <<span class="pl-ent">td</span>>Foo</<span class="pl-ent">td</span>>', 149 ' </<span class="pl-ent">tr</span>>', 150 '</<span class="pl-ent">table</span>></pre></div>'].join('\n'), 151 152 ['```html', 153 '<table>', 154 ' <tr>', 155 ' <td>Foo</td>', 156 ' </tr>', 157 '</table>', 158 '```'].join('\n'), 159 160 'HTML' 161 ] 162 ]); 163 });