@@ -7,11 +7,13 @@ import MagicString from 'magic-string';
77import { parseAst } from 'rollup/parseAst' ;
88import { describe , it } from 'vitest' ;
99
10- import { transformDefineMeta } from './index.js' ;
10+ import { createMetaVariableDeclaration , transformDefineMeta } from './index.js' ;
1111
1212import { getSvelteAST } from '$lib/parser/ast.js' ;
1313import { extractSvelteASTNodes } from '$lib/parser/extract/svelte/nodes.js' ;
1414import { extractCompiledASTNodes } from '$lib/parser/extract/compiled/nodes.js' ;
15+ import { insertDefineMetaParameters } from './insert-parameters.js' ;
16+ import { replaceDefineMetaArgument } from './replace-argument.js' ;
1517
1618const __dirname = path . dirname ( url . fileURLToPath ( import . meta. url ) ) ;
1719
@@ -56,3 +58,62 @@ describe(transformDefineMeta.name, () => {
5658 ) ;
5759 } ) ;
5860} ) ;
61+
62+ describe ( createMetaVariableDeclaration . name , ( ) => {
63+ it ( 'parameters are transformed correctly' , async ( { expect } ) => {
64+ const filename = path . resolve ( __dirname , '../../../../tests/stories/Example.stories.svelte' ) ;
65+ const originalCode = fs . readFileSync ( filename ) . toString ( ) ;
66+ const compiledPreTransformCode = fs
67+ . readFileSync (
68+ path . resolve (
69+ __dirname ,
70+ '../../../../tests/__compiled__/pre-transform/Example.stories.dev.js'
71+ )
72+ )
73+ . toString ( ) ;
74+ const svelteAST = getSvelteAST ( { code : originalCode , filename } ) ;
75+ const svelteASTNodes = await extractSvelteASTNodes ( {
76+ ast : svelteAST ,
77+ filename,
78+ } ) ;
79+ const compiledASTNodes = await extractCompiledASTNodes ( {
80+ ast : parseAst ( compiledPreTransformCode ) ,
81+ filename,
82+ } ) ;
83+ insertDefineMetaParameters ( {
84+ nodes : {
85+ svelte : svelteASTNodes ,
86+ compiled : compiledASTNodes ,
87+ } ,
88+ filename,
89+ } ) ;
90+
91+ const metaObjectExpression = replaceDefineMetaArgument ( {
92+ nodes : {
93+ svelte : svelteASTNodes ,
94+ compiled : compiledASTNodes ,
95+ } ,
96+ } ) ;
97+ const metaVariableDeclaration = createMetaVariableDeclaration ( { init : metaObjectExpression } ) ;
98+
99+ expect ( print ( metaVariableDeclaration ) . code ) . toMatchInlineSnapshot ( `
100+ "const meta = {
101+ title: 'Example',
102+ component: Example,
103+ tags: ['autodocs'],
104+ args: {
105+ onclick: action('onclick'),
106+ onmouseenter: action('onmouseenter'),
107+ onmouseleave: action('onmouseleave')
108+ },
109+ parameters: {
110+ docs: {
111+ description: {
112+ component: "Description set explicitly in the comment above \`defineMeta\`.\\n\\nMultiline supported. And also Markdown syntax:\\n\\n* **Bold**,\\n* _Italic_,\\n* \`Code\`."
113+ }
114+ }
115+ }
116+ };"
117+ ` ) ;
118+ } ) ;
119+ } ) ;
0 commit comments