1- import * as fs from 'node:fs/promises' ;
2-
3- import { describe , expect , it } from 'vitest' ;
1+ import { describe , expect , it , vi } from 'vitest' ;
42
53import * as babel from 'storybook/internal/babel' ;
64
75import { findUp } from 'find-up' ;
86
97import { vitestConfigFiles } from './vitestConfigFiles' ;
108
11- const liveContext : any = { babel, findUp, fs } ;
9+ vi . mock ( 'find-up' , ( ) => ( {
10+ findUp : vi . fn ( ) . mockImplementation ( ( [ name ] ) => name ) ,
11+ findUpSync : vi . fn ( ) ,
12+ } ) ) ;
1213
1314const fileMocks = {
1415 'vitest.config.ts' : `
@@ -70,13 +71,11 @@ const fileMocks = {
7071 ` ,
7172} ;
7273
73- const mockContext : any = {
74- ...liveContext ,
75- findUp : async ( [ name ] : string [ ] ) => name ,
76- fs : {
77- readFile : async ( path : keyof typeof fileMocks ) => fileMocks [ path ] ,
78- } ,
79- } ;
74+ vi . mock ( 'node:fs/promises' , ( ) => ( {
75+ readFile : vi . fn ( ) . mockImplementation ( ( filePath ) => fileMocks [ filePath as keyof typeof fileMocks ] ) ,
76+ } ) ) ;
77+
78+ const mockContext : any = { } ;
8079
8180const coerce =
8281 ( from : string , to : string ) =>
@@ -87,64 +86,44 @@ const state: any = {
8786 directory : '.' ,
8887} ;
8988
90- // TODO @ghengeveld , I am in the process of removing the context
91- describe . skip ( 'these tests need to be updated' , ( ) => {
92- it ( 'should run properly with live dependencies' , async ( ) => {
93- const result = await vitestConfigFiles . condition ( liveContext , state ) ;
94- expect ( result ) . toEqual ( { type : 'compatible' } ) ;
95- } ) ;
96-
89+ describe ( 'vitestConfigFiles' , ( ) => {
9790 it ( 'should run properly with mock dependencies' , async ( ) => {
9891 const result = await vitestConfigFiles . condition ( mockContext , state ) ;
9992 expect ( result ) . toEqual ( { type : 'compatible' } ) ;
10093 } ) ;
10194
102- it ( 'should disallow missing dependencies' , async ( ) => {
103- const result = await vitestConfigFiles . condition ( { } as any , state ) ;
104- expect ( result ) . toEqual ( {
105- type : 'incompatible' ,
106- reasons : [ 'Missing babel on context' , 'Missing findUp on context' , 'Missing fs on context' ] ,
107- } ) ;
108- } ) ;
109-
11095 describe ( 'Check Vitest workspace files' , ( ) => {
11196 it ( 'should disallow JSON workspace file' , async ( ) => {
112- const result = await vitestConfigFiles . condition (
113- { ...mockContext , findUp : coerce ( 'workspace' , 'vitest.workspace.json' ) } ,
114- state
115- ) ;
97+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'workspace' , 'vitest.workspace.json' ) as never ) ;
98+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
11699 expect ( result ) . toEqual ( {
117100 type : 'incompatible' ,
118101 reasons : [ 'Cannot auto-update JSON workspace file: vitest.workspace.json' ] ,
119102 } ) ;
120103 } ) ;
121104
122105 it ( 'should disallow invalid workspace file' , async ( ) => {
123- const result = await vitestConfigFiles . condition (
124- { ...mockContext , findUp : coerce ( 'workspace' , 'invalidWorkspace.ts' ) } ,
125- state
126- ) ;
106+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'workspace' , 'invalidWorkspace.ts' ) as never ) ;
107+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
127108 expect ( result ) . toEqual ( {
128109 type : 'incompatible' ,
129110 reasons : [ 'Found an invalid workspace config file: invalidWorkspace.ts' ] ,
130111 } ) ;
131112 } ) ;
132113
133114 it ( 'should allow defineWorkspace syntax' , async ( ) => {
134- const result = await vitestConfigFiles . condition (
135- { ...mockContext , findUp : coerce ( 'workspace' , 'defineWorkspace.ts' ) } ,
136- state
137- ) ;
115+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'workspace' , 'defineWorkspace.ts' ) as never ) ;
116+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
138117 expect ( result ) . toEqual ( {
139118 type : 'compatible' ,
140119 } ) ;
141120 } ) ;
142121
143122 it ( 'should disallow invalid defineWorkspace syntax' , async ( ) => {
144- const result = await vitestConfigFiles . condition (
145- { ...mockContext , findUp : coerce ( 'workspace' , 'defineWorkspace-invalid.ts' ) } ,
146- state
123+ vi . mocked ( findUp ) . mockImplementation (
124+ coerce ( 'workspace' , 'defineWorkspace-invalid.ts' ) as never
147125 ) ;
126+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
148127 expect ( result ) . toEqual ( {
149128 type : 'incompatible' ,
150129 reasons : [ 'Found an invalid workspace config file: defineWorkspace-invalid.ts' ] ,
@@ -154,63 +133,51 @@ describe.skip('these tests need to be updated', () => {
154133
155134 describe ( 'Check Vitest config files' , ( ) => {
156135 it ( 'should disallow CommonJS config file' , async ( ) => {
157- const result = await vitestConfigFiles . condition (
158- { ...mockContext , findUp : coerce ( 'config' , 'vitest.config.cjs' ) } ,
159- state
160- ) ;
136+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'config' , 'vitest.config.cjs' ) as never ) ;
137+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
161138 expect ( result ) . toEqual ( {
162139 type : 'incompatible' ,
163140 reasons : [ 'Cannot auto-update CommonJS config file: vitest.config.cjs' ] ,
164141 } ) ;
165142 } ) ;
166143
167144 it ( 'should disallow invalid config file' , async ( ) => {
168- const result = await vitestConfigFiles . condition (
169- { ...mockContext , findUp : coerce ( 'config' , 'invalidConfig.ts' ) } ,
170- state
171- ) ;
145+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'config' , 'invalidConfig.ts' ) as never ) ;
146+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
172147 expect ( result ) . toEqual ( {
173148 type : 'incompatible' ,
174149 reasons : [ 'Found an invalid Vitest config file: invalidConfig.ts' ] ,
175150 } ) ;
176151 } ) ;
177152
178153 it ( 'should allow existing test config option' , async ( ) => {
179- const result = await vitestConfigFiles . condition (
180- { ...mockContext , findUp : coerce ( 'config' , 'testConfig.ts' ) } ,
181- state
182- ) ;
154+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'config' , 'testConfig.ts' ) as never ) ;
155+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
183156 expect ( result ) . toEqual ( {
184157 type : 'compatible' ,
185158 } ) ;
186159 } ) ;
187160
188161 it ( 'should disallow invalid test config option' , async ( ) => {
189- const result = await vitestConfigFiles . condition (
190- { ...mockContext , findUp : coerce ( 'config' , 'testConfig-invalid.ts' ) } ,
191- state
192- ) ;
162+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'config' , 'testConfig-invalid.ts' ) as never ) ;
163+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
193164 expect ( result ) . toEqual ( {
194165 type : 'incompatible' ,
195166 reasons : [ 'Found an invalid Vitest config file: testConfig-invalid.ts' ] ,
196167 } ) ;
197168 } ) ;
198169
199170 it ( 'should allow existing test.workspace config option' , async ( ) => {
200- const result = await vitestConfigFiles . condition (
201- { ...mockContext , findUp : coerce ( 'config' , 'workspaceConfig.ts' ) } ,
202- state
203- ) ;
171+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'config' , 'workspaceConfig.ts' ) as never ) ;
172+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
204173 expect ( result ) . toEqual ( {
205174 type : 'compatible' ,
206175 } ) ;
207176 } ) ;
208177
209178 it ( 'should disallow invalid test.workspace config option' , async ( ) => {
210- const result = await vitestConfigFiles . condition (
211- { ...mockContext , findUp : coerce ( 'config' , 'workspaceConfig-invalid.ts' ) } ,
212- state
213- ) ;
179+ vi . mocked ( findUp ) . mockImplementation ( coerce ( 'config' , 'workspaceConfig-invalid.ts' ) as never ) ;
180+ const result = await vitestConfigFiles . condition ( mockContext , state ) ;
214181 expect ( result ) . toEqual ( {
215182 type : 'incompatible' ,
216183 reasons : [ 'Found an invalid Vitest config file: workspaceConfig-invalid.ts' ] ,
0 commit comments