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        '&lt;table&gt;',
   119        '    &lt;tr&gt;',
   120        '        &lt;td&gt;Foo&lt;/td&gt;',
   121        '    &lt;/tr&gt;',
   122        '&lt;/table&gt;',
   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>&lt;<span class="pl-ent">table</span>&gt;',
   147        '    &lt;<span class="pl-ent">tr</span>&gt;',
   148        '        &lt;<span class="pl-ent">td</span>&gt;Foo&lt;/<span class="pl-ent">td</span>&gt;',
   149        '    &lt;/<span class="pl-ent">tr</span>&gt;',
   150        '&lt;/<span class="pl-ent">table</span>&gt;</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  });