11/**
22 * @vitest -environment jsdom
33 */
4+ import type { MarkdownLexerConfiguration , MarkdownToken } from '@tiptap/core' ;
45import { Editor } from '@tiptap/core' ;
56import StarterKit from '@tiptap/starter-kit' ;
67import { describe , expect , it , vi } from 'vitest' ;
78import { generateCmsImage , ResolveAssetFn } from './cmsImage.js' ;
89
10+ const stubHelpers = {
11+ renderChildren : ( ) => '' ,
12+ wrapInBlock : ( ) => '' ,
13+ indent : ( c : string ) => c ,
14+ } ;
15+ const stubCtx = { index : 0 , level : 0 } ;
16+ const stubTokens : MarkdownToken [ ] = [ ] ;
17+ const stubLexer : MarkdownLexerConfiguration = {
18+ inlineTokens : ( ) => [ ] ,
19+ blockTokens : ( ) => [ ] ,
20+ } ;
21+
922describe ( 'cmsImage Extension' , ( ) => {
1023 describe ( 'parseHTML' , ( ) => {
1124 it ( 'should parse data-asset-id attribute' , ( ) => {
@@ -89,12 +102,25 @@ describe('cmsImage Extension', () => {
89102 // given
90103 const resolveAsset : ResolveAssetFn = ( assetId ) => ( {
91104 id : assetId ,
105+ sys : {
106+ createdAt : null ,
107+ createdBy : null ,
108+ updatedAt : null ,
109+ updatedBy : null ,
110+ publishedAt : null ,
111+ } ,
112+ title : 'Test image' ,
113+ description : 'Test description' ,
114+ altText : 'Resolved alt text' ,
115+ tagIds : [ ] ,
92116 file : {
117+ name : 'resolved.jpg' ,
118+ mimeType : 'image/jpeg' ,
93119 src : 'https://cdn.example.com/resolved.jpg' ,
120+ size : 102400 ,
94121 width : 1200 ,
95122 height : 800 ,
96123 } ,
97- altText : 'Resolved alt text' ,
98124 } ) ;
99125
100126 const CmsImage = generateCmsImage ( { resolveAsset } ) ;
@@ -195,8 +221,8 @@ describe('cmsImage Extension', () => {
195221 } ) ;
196222
197223 // when
198- const node = editor . state . doc . firstChild ;
199- const result = CmsImage . config . renderMarkdown ?.( node ! ) ;
224+ const nodeJson = editor . getJSON ( ) . content ! [ 0 ] ! ;
225+ const result = CmsImage . config . renderMarkdown ?.( nodeJson , stubHelpers , stubCtx ) ;
200226
201227 // then
202228 expect ( result ) . toBe ( '\n\n' ) ;
@@ -221,8 +247,8 @@ describe('cmsImage Extension', () => {
221247 } ) ;
222248
223249 // when
224- const node = editor . state . doc . firstChild ;
225- const result = CmsImage . config . renderMarkdown ?.( node ! ) ;
250+ const nodeJson = editor . getJSON ( ) . content ! [ 0 ] ! ;
251+ const result = CmsImage . config . renderMarkdown ?.( nodeJson , stubHelpers , stubCtx ) ;
226252
227253 // then
228254 expect ( result ) . toBe ( '' ) ;
@@ -239,7 +265,7 @@ describe('cmsImage Extension', () => {
239265 const tokenizer = CmsImage . config . markdownTokenizer ;
240266
241267 // when
242- const result = tokenizer ?. tokenize ?. ( src ) ;
268+ const result = tokenizer ?. tokenize ( src , stubTokens , stubLexer ) ;
243269
244270 // then
245271 expect ( result ) . toEqual ( {
@@ -256,7 +282,7 @@ describe('cmsImage Extension', () => {
256282 const tokenizer = CmsImage . config . markdownTokenizer ;
257283
258284 // when
259- const result = tokenizer ?. tokenize ?. ( src ) ;
285+ const result = tokenizer ?. tokenize ( src , stubTokens , stubLexer ) ;
260286
261287 // then
262288 expect ( result ) . toBeUndefined ( ) ;
@@ -266,10 +292,10 @@ describe('cmsImage Extension', () => {
266292 // given
267293 const src = 'Some text  more text' ;
268294 const CmsImage = generateCmsImage ( { } ) ;
269- const tokenizer = CmsImage . config . markdownTokenizer ;
295+ const { start } = CmsImage . config . markdownTokenizer ?? { } ;
270296
271297 // when
272- const result = tokenizer ?. start ?. ( src ) ;
298+ const result = typeof start === 'function' ? start ( src ) : undefined ;
273299
274300 // then
275301 expect ( result ) . toBe ( 10 ) ;
0 commit comments