11import fs from 'fs' ;
22import path from 'path' ;
3+ import { fileURLToPath } from 'url' ;
4+ import { describe , it , expect , beforeEach , afterEach , vi , Mock } from 'vitest' ;
35import { runCodegen } from '../../commands/codegen.js' ;
46import * as swiftGenerator from '../../generators/swift.js' ;
57import * as kotlinGenerator from '../../generators/kotlin.js' ;
68import * as storeDiscovery from '../../store-discovery.js' ;
9+ import * as rockTools from '@rock-js/tools' ;
710
11+ const __dirname = path . dirname ( fileURLToPath ( import . meta. url ) ) ;
812const FIXTURES_DIR = path . join ( __dirname , '../../__fixtures__' ) ;
913
10- jest . mock ( '../../generators/swift' ) ;
11- jest . mock ( '../../generators/kotlin' ) ;
12- jest . mock ( '../../store-discovery' ) ;
13-
14- const mockGenerateSwift = swiftGenerator . generateSwift as jest . Mock ;
15- const mockGenerateKotlin = kotlinGenerator . generateKotlin as jest . Mock ;
16- const mockDiscoverStores = storeDiscovery . discoverStores as jest . Mock ;
17- const mockCwd = jest . spyOn ( process , 'cwd' ) ;
18- const mockConsoleError = jest . spyOn ( console , 'error' ) . mockImplementation ( ) ;
19- jest . spyOn ( console , 'warn' ) . mockImplementation ( ) ;
20- jest . spyOn ( process , 'exit' ) . mockImplementation ( ( code ) => {
14+ vi . mock ( '../../generators/swift' ) ;
15+ vi . mock ( '../../generators/kotlin' ) ;
16+ vi . mock ( '../../store-discovery' ) ;
17+ vi . mock ( '@rock-js/tools' , async ( importOriginal ) => {
18+ const actual = await importOriginal < typeof rockTools > ( ) ;
19+ return {
20+ ...actual ,
21+ logger : {
22+ ...actual . logger ,
23+ error : vi . fn ( ) ,
24+ warn : vi . fn ( ) ,
25+ info : vi . fn ( ) ,
26+ success : vi . fn ( ) ,
27+ } ,
28+ } ;
29+ } ) ;
30+
31+ const mockGenerateSwift = swiftGenerator . generateSwift as Mock ;
32+ const mockGenerateKotlin = kotlinGenerator . generateKotlin as Mock ;
33+ const mockDiscoverStores = storeDiscovery . discoverStores as Mock ;
34+ const mockCwd = vi . spyOn ( process , 'cwd' ) ;
35+ const mockLoggerError = rockTools . logger . error as Mock ;
36+ vi . spyOn ( process , 'exit' ) . mockImplementation ( ( code ) => {
2137 throw new Error ( `process.exit(${ code } )` ) ;
2238} ) ;
2339
@@ -48,7 +64,7 @@ describe('runCodegen', () => {
4864 cleanupTempDir ( tempDir ) ;
4965 tempDir = null ;
5066 }
51- jest . clearAllMocks ( ) ;
67+ vi . clearAllMocks ( ) ;
5268 } ) ;
5369
5470 it ( 'generates swift files for discovered store' , async ( ) => {
@@ -166,7 +182,7 @@ describe('runCodegen', () => {
166182 await expect ( runCodegen ( { platform : 'invalid' } ) ) . rejects . toThrow (
167183 'process.exit(1)'
168184 ) ;
169- expect ( mockConsoleError ) . toHaveBeenCalled ( ) ;
185+ expect ( mockLoggerError ) . toHaveBeenCalled ( ) ;
170186 } ) ;
171187
172188 it ( 'exits with error when generator fails' , async ( ) => {
@@ -179,7 +195,7 @@ describe('runCodegen', () => {
179195 mockGenerateSwift . mockRejectedValue ( new Error ( 'Generation failed' ) ) ;
180196
181197 await expect ( runCodegen ( { } ) ) . rejects . toThrow ( 'process.exit(1)' ) ;
182- expect ( mockConsoleError ) . toHaveBeenCalled ( ) ;
198+ expect ( mockLoggerError ) . toHaveBeenCalled ( ) ;
183199 } ) ;
184200
185201 it ( 'warns when store has no output paths for selected platform' , async ( ) => {
0 commit comments