66import { test as baseTest } from 'vitest'
77import { createRichEditor } from '../../EditorFactory.js'
88import { createMarkdownSerializer } from '../../extensions/Markdown.js'
9+ import { markdownThroughEditor } from '../testHelpers/markdown.js'
910
1011import markdownit from '../../markdownit/index.js'
1112
@@ -37,12 +38,32 @@ const test = baseTest.extend({
3738 } ,
3839} )
3940
40- describe ( 'Table' , ( ) => {
41+ describe ( 'Table extension ' , ( ) => {
4142 test ( 'Markdown-IT renders tables' , ( ) => {
4243 const rendered = markdownit . render ( input )
4344 expect ( rendered ) . toBe ( output )
4445 } )
4546
47+ it ( 'markdown table is preserved through editor' , ( ) => {
48+ expect ( markdownThroughEditor ( 'a|b\n-|-\n1|2\n' ) ) . toBe (
49+ '| a | b |\n|---|---|\n| 1 | 2 |\n' ,
50+ )
51+
52+ const complexTable = `
53+ | #| header1 | header2 |
54+ |--:|-------------------|---------------|
55+ | 1| list: | code: | \\
56+ | | | | \\
57+ | | * item1 | \`\`\`js | \\
58+ | | * item2 | const x = '1' | \\
59+ | | | \`\`\` | \\
60+ | |  | |
61+ | 2| cell3 | cell4 |
62+ | 3| | cell5 |
63+ `
64+ expect ( markdownThroughEditor ( complexTable ) ) . toBe ( complexTable )
65+ } )
66+
4667 test ( 'Load into editor' , ( { editor } ) => {
4768 editor . commands . setContent ( markdownit . render ( input ) )
4869
@@ -55,11 +76,18 @@ describe('Table', () => {
5576 th ( { dir : 'ltr' } , 'heading 3' ) ,
5677 ) ,
5778 tr (
58- td ( { dir : 'ltr' , textAlign : 'center' } , p ( { dir : 'ltr' } , 'center' ) ) ,
59- td ( { dir : 'ltr' , textAlign : 'right' } , p ( { dir : 'ltr' } , 'right' ) ) ,
79+ td (
80+ { dir : 'ltr' , textAlign : 'center' } ,
81+ p ( { dir : 'ltr' } , 'center' ) ,
82+ ) ,
83+ td (
84+ { dir : 'ltr' , textAlign : 'right' } ,
85+ p ( { dir : 'ltr' } , 'right' ) ,
86+ ) ,
6087 td (
6188 { dir : 'ltr' } ,
62- p ( { dir : 'ltr' } ,
89+ p (
90+ { dir : 'ltr' } ,
6391 'left cell ' ,
6492 br ( { syntax : 'html' } ) ,
6593 'with line break' ,
@@ -82,11 +110,18 @@ describe('Table', () => {
82110 th ( { dir : 'ltr' } , 'heading 3' ) ,
83111 ) ,
84112 tr (
85- td ( { dir : 'ltr' , textAlign : 'center' } , p ( { dir : 'ltr' } , 'center' ) ) ,
86- td ( { dir : 'ltr' , textAlign : 'right' } , p ( { dir : 'ltr' } , 'right' ) ) ,
113+ td (
114+ { dir : 'ltr' , textAlign : 'center' } ,
115+ p ( { dir : 'ltr' } , 'center' ) ,
116+ ) ,
117+ td (
118+ { dir : 'ltr' , textAlign : 'right' } ,
119+ p ( { dir : 'ltr' } , 'right' ) ,
120+ ) ,
87121 td (
88122 { dir : 'ltr' } ,
89- p ( { dir : 'ltr' } ,
123+ p (
124+ { dir : 'ltr' } ,
90125 'left cell ' ,
91126 br ( { syntax : ' ' } ) ,
92127 'with line break' ,
0 commit comments