1+ /* eslint-disable @typescript-eslint/prefer-ts-expect-error */
2+ /* eslint-disable @typescript-eslint/ban-ts-comment */
3+
14import { join } from 'path'
25import { test } from '@japa/runner'
36import { Filesystem } from '@poppinss/dev-utils'
@@ -13,46 +16,51 @@ test.group('vite-plugin-validate-env', (group) => {
1316 } )
1417
1518 test ( 'Basic validation' , async ( { assert } ) => {
16- const plugin = ValidateEnv ( {
17- VITE_TEST : Schema . boolean ( ) ,
18- } )
19+ assert . plan ( 1 )
1920
21+ const plugin = ValidateEnv ( { VITE_TEST : Schema . boolean ( ) } )
2022 await fs . add ( `.env.development` , `VITE_TEST=not boolean` )
2123
22- // @ts -expect-error - `config` is the handler
23- const fn = plugin . config ! . bind ( plugin , viteConfig , viteEnvConfig )
24- await assert . rejects (
25- fn ,
26- 'E_INVALID_ENV_VALUE: Value for environment variable "VITE_TEST" must be a boolean, instead received "not boolean"'
27- )
24+ try {
25+ // @ts -ignore
26+ await plugin . config ( viteConfig , viteEnvConfig )
27+ } catch ( error : any ) {
28+ assert . include ( error . message , ' "VITE_TEST" must be a boolean' )
29+ }
2830 } )
2931
3032 test ( 'Custom error message' , async ( { assert } ) => {
31- const plugin = ValidateEnv ( {
32- VITE_TEST : Schema . boolean ( { message : 'Heyhey' } ) ,
33- } )
33+ assert . plan ( 2 )
3434
35+ const plugin = ValidateEnv ( { VITE_TEST : Schema . boolean ( { message : 'Heyhey' } ) } )
3536 await fs . add ( `.env.development` , `VITE_TEST=not boolean` )
3637
37- // @ts -expect-error - `config` is the handler
38- const fn = plugin . config ! . bind ( plugin , viteConfig , viteEnvConfig )
39- await assert . rejects ( fn , 'E_INVALID_ENV_VALUE: Heyhey' )
38+ try {
39+ // @ts -ignore
40+ await plugin . config ( viteConfig , viteEnvConfig )
41+ } catch ( error : any ) {
42+ assert . include ( error . message , 'VITE_TEST' )
43+ assert . include ( error . message , 'Heyhey' )
44+ }
4045 } )
4146
4247 test ( 'Custom validator method' , async ( { assert } ) => {
48+ assert . plan ( 1 )
49+
4350 const plugin = ValidateEnv ( {
4451 VITE_TEST : ( _key , value ) => {
45- if ( value !== 'valid' ) {
46- throw new Error ( 'Value must be "valid"' )
47- }
52+ if ( value !== 'valid' ) throw new Error ( 'Value must be "valid"' )
4853 } ,
4954 } )
5055
5156 await fs . add ( `.env.development` , `VITE_TEST=not valid` )
5257
53- // @ts -expect-error - `config` is the handler
54- const fn = plugin . config ! . bind ( plugin , viteConfig , viteEnvConfig )
55- await assert . rejects ( fn , 'Value must be "valid"' )
58+ try {
59+ // @ts -ignore
60+ await plugin . config ( viteConfig , viteEnvConfig )
61+ } catch ( error : any ) {
62+ assert . include ( error . message , 'Value must be "valid"' )
63+ }
5664 } )
5765
5866 test ( 'Parsing result' , async ( { assert } ) => {
@@ -72,12 +80,14 @@ test.group('vite-plugin-validate-env', (group) => {
7280
7381 await fs . add ( `.env.development` , `VITE_URL_TRAILING=test.com` )
7482
75- // @ts -expect-error - `config` is the handler
83+ // @ts -ignore
7684 await plugin . config ! ( viteConfig , viteEnvConfig )
7785 assert . equal ( process . env . VITE_URL_TRAILING , 'test.com/' )
7886 } )
7987
8088 test ( 'Dedicated config file' , async ( { assert } ) => {
89+ assert . plan ( 1 )
90+
8191 const plugin = ValidateEnv ( )
8292
8393 await fs . add ( `.env.development` , `VITE_MY_VAR=true` )
@@ -90,9 +100,12 @@ test.group('vite-plugin-validate-env', (group) => {
90100 }`
91101 )
92102
93- // @ts -expect-error - `config` is the handler
94- const fn = plugin . config ! . bind ( plugin , viteConfig , viteEnvConfig )
95- await assert . rejects ( fn , 'Error validating' )
103+ try {
104+ // @ts -ignore
105+ await plugin . config ( viteConfig , viteEnvConfig )
106+ } catch ( error : any ) {
107+ assert . include ( error . message , 'Error validating' )
108+ }
96109 } )
97110
98111 test ( 'Should fail if no schema is found' , async ( { assert } ) => {
@@ -106,17 +119,39 @@ test.group('vite-plugin-validate-env', (group) => {
106119 } )
107120
108121 test ( 'Should pick up var with custom prefix' , async ( { assert } ) => {
122+ assert . plan ( 1 )
123+
124+ const plugin = ValidateEnv ( { CUSTOM_TEST : Schema . boolean ( ) } )
125+
126+ await fs . add ( `.env.development` , `CUSTOM_TEST=not boolean` )
127+
128+ try {
129+ // @ts -ignore
130+ await plugin . config ( { ...viteConfig , envPrefix : 'CUSTOM_' } , viteEnvConfig )
131+ } catch ( error : any ) {
132+ assert . include (
133+ error . message ,
134+ 'Value for environment variable "CUSTOM_TEST" must be a boolean, instead received "not boolean"'
135+ )
136+ }
137+ } )
138+
139+ test ( 'Display multiple errors' , async ( { assert } ) => {
140+ assert . plan ( 2 )
141+
109142 const plugin = ValidateEnv ( {
110- CUSTOM_TEST : Schema . boolean ( ) ,
143+ VITE_TEST : Schema . boolean ( ) ,
144+ VITE_TEST2 : Schema . boolean ( ) ,
111145 } )
112146
113- await fs . add ( `.env.development` , `CUSTOM_TEST=not boolean` )
147+ await fs . add ( `.env.development` , '' )
114148
115- // @ts -expect-error - `config` is the handler
116- const fn = plugin . config ! . bind ( plugin , { ...viteConfig , envPrefix : 'CUSTOM_' } , viteEnvConfig )
117- await assert . rejects (
118- fn ,
119- 'E_INVALID_ENV_VALUE: Value for environment variable "CUSTOM_TEST" must be a boolean, instead received "not boolean"'
120- )
149+ try {
150+ // @ts -ignore
151+ await plugin . config ( viteConfig , viteEnvConfig )
152+ } catch ( error : any ) {
153+ assert . include ( error . message , 'Missing environment variable "VITE_TEST"' )
154+ assert . include ( error . message , 'Missing environment variable "VITE_TEST2"' )
155+ }
121156 } )
122157} )
0 commit comments