@@ -8,19 +8,21 @@ import {
88 mock ,
99 spyOn ,
1010} from 'bun:test'
11- import { registerCodegen , run , runCommand } from '../code'
1211import * as devupModule from '../commands/devup'
1312import * as exportAssetsModule from '../commands/exportAssets'
1413import * as exportComponentsModule from '../commands/exportComponents'
1514
16- beforeAll ( ( ) => {
15+ let codeModule : typeof import ( '../code-impl' )
16+
17+ beforeAll ( async ( ) => {
1718 ; ( globalThis as { figma ?: unknown } ) . figma = {
1819 editorType : 'dev' ,
1920 mode : 'codegen' ,
2021 command : 'noop' ,
2122 codegen : { on : mock ( ( ) => { } ) } ,
2223 closePlugin : mock ( ( ) => { } ) ,
2324 } as unknown as typeof figma
25+ codeModule = await import ( '../code-impl' )
2426} )
2527
2628beforeEach ( ( ) => {
@@ -61,7 +63,7 @@ describe('runCommand', () => {
6163 closePlugin,
6264 } as unknown as typeof figma
6365
64- await runCommand ( figmaMock as typeof figma )
66+ await codeModule . runCommand ( figmaMock as typeof figma )
6567
6668 switch ( fn ) {
6769 case 'exportDevup' :
@@ -131,7 +133,7 @@ describe('registerCodegen', () => {
131133 codegen : { on : mock ( ( ) => { } ) } ,
132134 closePlugin : mock ( ( ) => { } ) ,
133135 } as unknown as typeof figma
134- registerCodegen ( figmaMock )
136+ codeModule . registerCodegen ( figmaMock )
135137 expect ( figmaMock . codegen . on ) . toHaveBeenCalledWith (
136138 'generate' ,
137139 expect . any ( Function ) ,
@@ -145,23 +147,38 @@ describe('registerCodegen', () => {
145147 } )
146148} )
147149
148- it ( 'should not register codegen if figma is not defined' , ( ) => {
149- run ( undefined as unknown as typeof figma )
150+ it ( 'should not register codegen if figma is not defined' , async ( ) => {
151+ codeModule . run ( undefined as unknown as typeof figma )
150152 expect ( devupModule . exportDevup ) . not . toHaveBeenCalled ( )
151153 expect ( devupModule . importDevup ) . not . toHaveBeenCalled ( )
152154 expect ( exportAssetsModule . exportAssets ) . not . toHaveBeenCalled ( )
153155 expect ( exportComponentsModule . exportComponents ) . not . toHaveBeenCalled ( )
154156} )
155157
156- it ( 'should run command' , ( ) => {
158+ it ( 'should run command' , async ( ) => {
157159 const figmaMock = {
158160 editorType : 'figma' ,
159161 command : 'export-devup' ,
160162 closePlugin : mock ( ( ) => { } ) ,
161163 } as unknown as typeof figma
162- run ( figmaMock as typeof figma )
164+ codeModule . run ( figmaMock as typeof figma )
163165 expect ( devupModule . exportDevup ) . toHaveBeenCalledWith ( 'json' )
164166 expect ( devupModule . importDevup ) . not . toHaveBeenCalled ( )
165167 expect ( exportAssetsModule . exportAssets ) . not . toHaveBeenCalled ( )
166168 expect ( exportComponentsModule . exportComponents ) . not . toHaveBeenCalled ( )
167169} )
170+
171+ it ( 'auto-runs on module load when figma is present' , async ( ) => {
172+ const codegenOn = mock ( ( ) => { } )
173+ ; ( globalThis as { figma ?: unknown } ) . figma = {
174+ editorType : 'dev' ,
175+ mode : 'codegen' ,
176+ command : 'noop' ,
177+ codegen : { on : codegenOn } ,
178+ closePlugin : mock ( ( ) => { } ) ,
179+ } as unknown as typeof figma
180+
181+ await import ( `../code?with-figma=${ Date . now ( ) } ` )
182+
183+ expect ( codegenOn ) . toHaveBeenCalledWith ( 'generate' , expect . any ( Function ) )
184+ } )
0 commit comments