1
1
import { builders } from 'prosemirror-test-builder' ;
2
+ import dd from 'ts-dedent' ;
2
3
3
4
import { createMarkupChecker } from '../../../../tests/sameMarkup' ;
4
5
import { ExtensionsManager } from '../../../core' ;
5
- import { BaseNode , BaseSchemaSpecs } from '../../specs' ;
6
+ import { BaseNode , BaseSchemaSpecs , BlockquoteSpecs , blockquoteNodeName } from '../../specs' ;
6
7
7
8
import { MermaidSpecs } from './MermaidSpecs' ;
8
9
import { MermaidAttrs , mermaidNodeName } from './const' ;
@@ -12,17 +13,39 @@ const {
12
13
markupParser : parser ,
13
14
serializer,
14
15
} = new ExtensionsManager ( {
15
- extensions : ( builder ) => builder . use ( BaseSchemaSpecs , { } ) . use ( MermaidSpecs , { } ) ,
16
+ extensions : ( builder ) =>
17
+ builder . use ( BaseSchemaSpecs , { } ) . use ( BlockquoteSpecs ) . use ( MermaidSpecs , { } ) ,
16
18
} ) . buildDeps ( ) ;
17
19
18
- const { doc, mermaid} = builders < 'doc' | 'mermaid' > ( schema , {
20
+ const { doc, mermaid, quote } = builders < 'doc' | 'mermaid' | 'quote '> ( schema , {
19
21
doc : { nodeType : BaseNode . Doc } ,
20
22
mermaid : { nodeType : mermaidNodeName } ,
23
+ quote : { nodeType : blockquoteNodeName } ,
21
24
} ) ;
22
25
23
26
const { same} = createMarkupChecker ( { parser, serializer} ) ;
24
27
25
28
describe ( 'Mermaid extension' , ( ) => {
26
29
it ( 'should parse mermaid' , ( ) =>
27
30
same ( '```mermaid\ncontent\n```\n' , doc ( mermaid ( { [ MermaidAttrs . content ] : 'content\n' } ) ) ) ) ;
31
+
32
+ it ( 'should parse mermaid inside blockqoute' , ( ) => {
33
+ const mermaidContent = dd `
34
+ sequenceDiagram
35
+ Alice->>Bob: Hi Bob
36
+ Bob->>Alice: Hi Alice
37
+
38
+ ` ;
39
+
40
+ const markup = dd `
41
+ > \`\`\`mermaid
42
+ > sequenceDiagram
43
+ > Alice->>Bob: Hi Bob
44
+ > Bob->>Alice: Hi Alice
45
+ > \`\`\`
46
+
47
+ ` ;
48
+
49
+ same ( markup , doc ( quote ( mermaid ( { [ MermaidAttrs . content ] : mermaidContent } ) ) ) ) ;
50
+ } ) ;
28
51
} ) ;
0 commit comments