blockquotes.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /**
  2. * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  4. */
  5. import { testDataProcessor } from '../_utils/utils';
  6. describe( 'GFMDataProcessor', () => {
  7. describe( 'blockquotes', () => {
  8. it( 'should process single blockquotes', () => {
  9. testDataProcessor(
  10. '> foo bar',
  11. // GitHub is rendering as:
  12. //
  13. // <blockquote>
  14. // <p>foo bar</p>
  15. // </blockquote>
  16. '<blockquote><p>foo bar</p></blockquote>'
  17. );
  18. } );
  19. it( 'should process nested blockquotes', () => {
  20. testDataProcessor(
  21. '> foo\n' +
  22. '>\n' +
  23. '> > bar\n' +
  24. '>\n' +
  25. '> foo',
  26. // GitHub is rendering as:
  27. // <blockquote>
  28. // <p>foo</p>
  29. //
  30. // <blockquote>
  31. // <p>bar</p>
  32. // </blockquote>
  33. //
  34. // <p>foo</p>
  35. // </blockquote>
  36. '<blockquote>' +
  37. '<p>foo</p>' +
  38. '<blockquote>' +
  39. '<p>bar</p>' +
  40. '</blockquote>' +
  41. '<p>foo</p>' +
  42. '</blockquote>'
  43. );
  44. } );
  45. it( 'should process list within a blockquote', () => {
  46. testDataProcessor(
  47. '> A list within a blockquote:\n' +
  48. '>\n' +
  49. '> * asterisk 1\n' +
  50. '> * asterisk 2\n' +
  51. '> * asterisk 3',
  52. // GitHub is rendering as:
  53. // <blockquote>
  54. // <p>A list within a blockquote:</p>
  55. //
  56. // <ul>
  57. // <li>asterisk 1</li>
  58. // <li>asterisk 2</li>
  59. // <li>asterisk 3</li>
  60. // </ul>
  61. // </blockquote>
  62. '<blockquote>' +
  63. '<p>A list within a blockquote:</p>' +
  64. '<ul>' +
  65. '<li>asterisk 1</li>' +
  66. '<li>asterisk 2</li>' +
  67. '<li>asterisk 3</li>' +
  68. '</ul>' +
  69. '</blockquote>'
  70. );
  71. } );
  72. it( 'should process blockquotes with code inside with ```', () => {
  73. testDataProcessor(
  74. '> Example 1:\n' +
  75. '>\n' +
  76. '> ```\n' +
  77. '> code 1\n' +
  78. '> ```\n' +
  79. '>\n' +
  80. '> Example 2:\n' +
  81. '>\n' +
  82. '> ```\n' +
  83. '> code 2\n' +
  84. '> ```',
  85. // GitHub is rendering as:
  86. // <blockquote>
  87. // <p>Example 1:</p>
  88. //
  89. // <pre><code>code 1
  90. // </code></pre>
  91. //
  92. // <p>Example 2:</p>
  93. //
  94. // <pre><code>code 2
  95. // </code></pre>
  96. // </blockquote>
  97. '<blockquote>' +
  98. '<p>Example 1:</p>' +
  99. '<pre>' +
  100. '<code>' +
  101. 'code 1' +
  102. '</code>' +
  103. '</pre>' +
  104. '<p>Example 2:</p>' +
  105. '<pre>' +
  106. '<code>' +
  107. 'code 2' +
  108. '</code>' +
  109. // Space after `</pre>` might be due to bug in engine. See: https://github.com/ckeditor/ckeditor5/issues/7863.
  110. '</pre> ' +
  111. '</blockquote>',
  112. '> Example 1:\n' +
  113. '>\n' +
  114. '> ```\n' +
  115. '> code 1\n' +
  116. '> ```\n' +
  117. '>\n' +
  118. '> Example 2:\n' +
  119. '>\n' +
  120. '> ```\n' +
  121. '> code 2\n' +
  122. '> ```' +
  123. // The below is an artefact of space after `</pre>`. See comment above & https://github.com/ckeditor/ckeditor5/issues/7863.
  124. '\n>\n>'
  125. );
  126. } );
  127. it( 'should process blockquotes with code inside with tabs', () => {
  128. testDataProcessor(
  129. '> Example 1:\n' +
  130. '>\n' +
  131. '> code 1\n' +
  132. '>\n' +
  133. '> Example 2:\n' +
  134. '>\n' +
  135. '> code 2\n',
  136. // GitHub is rendering as:
  137. // <blockquote>
  138. // <p>Example 1:</p>
  139. //
  140. // <pre><code>code 1
  141. // </code></pre>
  142. //
  143. // <p>Example 2:</p>
  144. //
  145. // <pre><code>code 2
  146. // </code></pre>
  147. // </blockquote>
  148. '<blockquote>' +
  149. '<p>Example 1:</p>' +
  150. '<pre>' +
  151. '<code>' +
  152. 'code 1' +
  153. '</code>' +
  154. '</pre>' +
  155. '<p>Example 2:</p>' +
  156. '<pre>' +
  157. '<code>' +
  158. 'code 2' +
  159. '</code>' +
  160. // Space after `</pre>` might be due to bug in engine. See: https://github.com/ckeditor/ckeditor5/issues/7863.
  161. '</pre> ' +
  162. '</blockquote>',
  163. // When converting back to data, DataProcessor will normalize tabs to ```.
  164. '> Example 1:\n' +
  165. '>\n' +
  166. '> ```\n' +
  167. '> code 1\n' +
  168. '> ```\n' +
  169. '>\n' +
  170. '> Example 2:\n' +
  171. '>\n' +
  172. '> ```\n' +
  173. '> code 2\n' +
  174. '> ```' +
  175. // The below is an artefact of space after `</pre>`. See comment above & https://github.com/ckeditor/ckeditor5/issues/7863.
  176. '\n>\n>'
  177. );
  178. } );
  179. } );
  180. } );