11import { existsSync , mkdirSync , readFileSync , writeFileSync } from 'node:fs'
22import { join , resolve } from 'node:path'
33
4- import { getThemeInterface } from '@devup-ui/wasm'
4+ import { getDefaultTheme , getThemeInterface } from '@devup-ui/wasm'
55import { DevupUIWebpackPlugin } from '@devup-ui/webpack-plugin'
66
77import { DevupUI } from '../plugin'
@@ -14,6 +14,19 @@ vi.mock('@devup-ui/wasm', async (original) => ({
1414 ...( await original ( ) ) ,
1515 registerTheme : vi . fn ( ) ,
1616 getThemeInterface : vi . fn ( ) ,
17+ getDefaultTheme : vi . fn ( ) ,
18+ exportSheet : vi . fn ( ( ) =>
19+ JSON . stringify ( {
20+ css : { } ,
21+ font_faces : { } ,
22+ global_css_files : [ ] ,
23+ imports : { } ,
24+ keyframes : { } ,
25+ properties : { } ,
26+ } ) ,
27+ ) ,
28+ exportClassMap : vi . fn ( ( ) => JSON . stringify ( { } ) ) ,
29+ exportFileMap : vi . fn ( ( ) => JSON . stringify ( { } ) ) ,
1730} ) )
1831
1932describe ( 'DevupUINextPlugin' , ( ) => {
@@ -312,5 +325,67 @@ describe('DevupUINextPlugin', () => {
312325 } )
313326 expect ( writeFileSync ) . toHaveBeenCalledWith ( join ( 'df' , '.gitignore' ) , '*' )
314327 } )
328+ it ( 'should set DEVUP_UI_DEFAULT_THEME when getDefaultTheme returns a value' , async ( ) => {
329+ vi . stubEnv ( 'TURBOPACK' , '1' )
330+ vi . stubEnv ( 'DEVUP_UI_DEFAULT_THEME' , '' )
331+ vi . mocked ( existsSync )
332+ . mockReturnValueOnce ( true )
333+ . mockReturnValueOnce ( true )
334+ . mockReturnValueOnce ( true )
335+ . mockReturnValueOnce ( false )
336+ vi . mocked ( getDefaultTheme ) . mockReturnValue ( 'dark' )
337+ const config : any = { }
338+ const ret = DevupUI ( config )
339+
340+ expect ( process . env . DEVUP_UI_DEFAULT_THEME ) . toBe ( 'dark' )
341+ expect ( ret . env ) . toEqual ( {
342+ DEVUP_UI_DEFAULT_THEME : 'dark' ,
343+ } )
344+ expect ( config . env ) . toEqual ( {
345+ DEVUP_UI_DEFAULT_THEME : 'dark' ,
346+ } )
347+ } )
348+ it ( 'should not set DEVUP_UI_DEFAULT_THEME when getDefaultTheme returns undefined' , async ( ) => {
349+ vi . stubEnv ( 'TURBOPACK' , '1' )
350+ vi . stubEnv ( 'DEVUP_UI_DEFAULT_THEME' , '' )
351+ vi . mocked ( existsSync )
352+ . mockReturnValueOnce ( true )
353+ . mockReturnValueOnce ( true )
354+ . mockReturnValueOnce ( true )
355+ . mockReturnValueOnce ( false )
356+ vi . mocked ( getDefaultTheme ) . mockReturnValue ( undefined )
357+ const config : any = { }
358+ const ret = DevupUI ( config )
359+
360+ expect ( process . env . DEVUP_UI_DEFAULT_THEME ) . toBe ( '' )
361+ expect ( ret . env ) . toBeUndefined ( )
362+ expect ( config . env ) . toBeUndefined ( )
363+ } )
364+ it ( 'should set DEVUP_UI_DEFAULT_THEME and preserve existing env vars' , async ( ) => {
365+ vi . stubEnv ( 'TURBOPACK' , '1' )
366+ vi . stubEnv ( 'DEVUP_UI_DEFAULT_THEME' , '' )
367+ vi . mocked ( existsSync )
368+ . mockReturnValueOnce ( true )
369+ . mockReturnValueOnce ( true )
370+ . mockReturnValueOnce ( true )
371+ . mockReturnValueOnce ( false )
372+ vi . mocked ( getDefaultTheme ) . mockReturnValue ( 'light' )
373+ const config : any = {
374+ env : {
375+ CUSTOM_VAR : 'value' ,
376+ } ,
377+ }
378+ const ret = DevupUI ( config )
379+
380+ expect ( process . env . DEVUP_UI_DEFAULT_THEME ) . toBe ( 'light' )
381+ expect ( ret . env ) . toEqual ( {
382+ CUSTOM_VAR : 'value' ,
383+ DEVUP_UI_DEFAULT_THEME : 'light' ,
384+ } )
385+ expect ( config . env ) . toEqual ( {
386+ CUSTOM_VAR : 'value' ,
387+ DEVUP_UI_DEFAULT_THEME : 'light' ,
388+ } )
389+ } )
315390 } )
316391} )
0 commit comments