@@ -7,11 +7,13 @@ import MagicString from 'magic-string';
7
7
import { parseAst } from 'rollup/parseAst' ;
8
8
import { describe , it } from 'vitest' ;
9
9
10
- import { transformDefineMeta } from './index.js' ;
10
+ import { createMetaVariableDeclaration , transformDefineMeta } from './index.js' ;
11
11
12
12
import { getSvelteAST } from '$lib/parser/ast.js' ;
13
13
import { extractSvelteASTNodes } from '$lib/parser/extract/svelte/nodes.js' ;
14
14
import { extractCompiledASTNodes } from '$lib/parser/extract/compiled/nodes.js' ;
15
+ import { insertDefineMetaParameters } from './insert-parameters.js' ;
16
+ import { replaceDefineMetaArgument } from './replace-argument.js' ;
15
17
16
18
const __dirname = path . dirname ( url . fileURLToPath ( import . meta. url ) ) ;
17
19
@@ -56,3 +58,62 @@ describe(transformDefineMeta.name, () => {
56
58
) ;
57
59
} ) ;
58
60
} ) ;
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