@@ -248,4 +248,55 @@ describe('Modules', () => {
248248 const text = await response . text ( )
249249 expect ( text ) . toEqual ( 'GET /plugin' )
250250 } )
251+
252+ it ( 'register dynamic import routes inside guard' , async ( ) => {
253+ const app = new Elysia ( ) . guard (
254+ { } ,
255+ ( app ) => app . use ( import ( '../modules' ) . then ( ( m ) => m . lazyInstance ) )
256+ )
257+
258+ await app . modules
259+
260+ const res = await app . handle ( req ( '/lazy-instance' ) )
261+
262+ expect ( res . status ) . toBe ( 200 )
263+ expect ( await res . text ( ) ) . toBe ( 'lazy-instance' )
264+ } )
265+
266+ it ( 'register multiple dynamic import routes inside guard' , async ( ) => {
267+ const lazyA = Promise . resolve ( new Elysia ( ) . get ( '/a' , ( ) => 'a' ) )
268+ const lazyB = Promise . resolve ( new Elysia ( ) . get ( '/b' , ( ) => 'b' ) )
269+
270+ let hookCalls = 0
271+
272+ const app = new Elysia ( ) . guard (
273+ { beforeHandle : ( ) => { hookCalls ++ } } ,
274+ ( app ) => app . use ( lazyA ) . use ( lazyB )
275+ )
276+
277+ await app . modules
278+
279+ expect ( ( await app . handle ( req ( '/a' ) ) ) . status ) . toBe ( 200 )
280+ expect ( ( await app . handle ( req ( '/b' ) ) ) . status ) . toBe ( 200 )
281+ expect ( hookCalls ) . toBe ( 2 )
282+ } )
283+
284+ it ( 'register dynamic import routes inside guard with hook' , async ( ) => {
285+ let called = false
286+
287+ const app = new Elysia ( ) . guard (
288+ {
289+ beforeHandle : ( ) => {
290+ called = true
291+ }
292+ } ,
293+ ( app ) => app . use ( import ( '../modules' ) . then ( ( m ) => m . lazyInstance ) )
294+ )
295+
296+ await app . modules
297+
298+ await app . handle ( req ( '/lazy-instance' ) )
299+
300+ expect ( called ) . toBe ( true )
301+ } )
251302} )
0 commit comments