@@ -82,26 +82,85 @@ describe('sanitizeAddonName', () => {
82
82
// @ts -expect-error the property is read only but we can change it for testing purposes
83
83
path . sep = '\\' ;
84
84
const cwdMockPath = `C:\\Users\\username\\storybook-app` ;
85
- jest . spyOn ( process , `cwd` ) . mockImplementationOnce ( ( ) => cwdMockPath ) ;
85
+ const cwdSpy = jest . spyOn ( process , `cwd` ) . mockReturnValue ( cwdMockPath ) ;
86
86
87
87
expect ( sanitizeAddonName ( `${ cwdMockPath } \\local-addon\\themes.js` ) ) . toEqual (
88
88
'$SNIP\\local-addon\\themes'
89
89
) ;
90
+ cwdSpy . mockRestore ( ) ;
90
91
} ) ;
91
92
92
93
test ( 'Linux paths' , ( ) => {
93
94
// @ts -expect-error the property is read only but we can change it for testing purposes
94
95
path . sep = '/' ;
95
96
const cwdMockPath = `/Users/username/storybook-app` ;
96
- jest . spyOn ( process , `cwd` ) . mockImplementationOnce ( ( ) => cwdMockPath ) ;
97
+ const cwdSpy = jest . spyOn ( process , `cwd` ) . mockReturnValue ( cwdMockPath ) ;
97
98
98
99
expect ( sanitizeAddonName ( `${ cwdMockPath } /local-addon/themes.js` ) ) . toEqual (
99
100
'$SNIP/local-addon/themes'
100
101
) ;
102
+
103
+ cwdSpy . mockRestore ( ) ;
101
104
} ) ;
102
105
} ) ;
103
106
104
- describe ( 'await computeStorybookMetadata' , ( ) => {
107
+ describe ( 'computeStorybookMetadata' , ( ) => {
108
+ test ( 'should parse pnp paths for known frameworks' , async ( ) => {
109
+ const reactResult = await computeStorybookMetadata ( {
110
+ packageJson : packageJsonMock ,
111
+ mainConfig : {
112
+ ...mainJsMock ,
113
+ framework : {
114
+ name : '/Users/foo/storybook/.yarn/__virtual__/@storybook-react-vite-virtual-769c990b9/0/cache/@storybook-react-vite-npm-7.1.0-alpha.38-512b-a23.zip/node_modules/@storybook/react-vite' ,
115
+ options : {
116
+ fastRefresh : false ,
117
+ } ,
118
+ } ,
119
+ } ,
120
+ } ) ;
121
+
122
+ expect ( reactResult . framework ) . toEqual ( {
123
+ name : '@storybook/react-vite' ,
124
+ options : { fastRefresh : false } ,
125
+ } ) ;
126
+ } ) ;
127
+
128
+ test ( 'should parse pnp paths for unknown frameworks' , async ( ) => {
129
+ const pnpResult = await computeStorybookMetadata ( {
130
+ packageJson : packageJsonMock ,
131
+ mainConfig : {
132
+ ...mainJsMock ,
133
+ framework : {
134
+ name : '/Users/foo/my-project/.yarn/__virtual__/@storybook-react-vite-virtual-769c990b9/0/cache/@storybook-react-rust-npm-7.1.0-alpha.38-512b-a23.zip/node_modules/storybook-react-rust' ,
135
+ } ,
136
+ } ,
137
+ } ) ;
138
+
139
+ expect ( pnpResult . framework ) . toEqual ( {
140
+ name : 'storybook-react-rust' ,
141
+ } ) ;
142
+ } ) ;
143
+
144
+ test ( 'should sanitize pnp paths for local frameworks' , async ( ) => {
145
+ const cwdSpy = jest . spyOn ( process , 'cwd' ) . mockReturnValue ( '/Users/foo/my-project' ) ;
146
+
147
+ const localResult = await computeStorybookMetadata ( {
148
+ packageJson : packageJsonMock ,
149
+ mainConfig : {
150
+ ...mainJsMock ,
151
+ framework : {
152
+ name : '/Users/foo/my-project/.storybook/some-local-framework' ,
153
+ } ,
154
+ } ,
155
+ } ) ;
156
+
157
+ expect ( localResult . framework ) . toEqual ( {
158
+ name : '$SNIP/.storybook/some-local-framework' ,
159
+ } ) ;
160
+
161
+ cwdSpy . mockRestore ( ) ;
162
+ } ) ;
163
+
105
164
test ( 'should return frameworkOptions from mainjs' , async ( ) => {
106
165
const reactResult = await computeStorybookMetadata ( {
107
166
packageJson : packageJsonMock ,
0 commit comments