@@ -28,28 +28,40 @@ describe('routeManifestInjection.exclude', () => {
2828 } ) ;
2929
3030 describe ( 'with string patterns' , ( ) => {
31- it ( 'should exclude exact string matches ' , ( ) => {
31+ it ( 'should exclude routes containing the string pattern (substring match) ' , ( ) => {
3232 const result = filterRouteManifest ( mockManifest , [ '/admin' ] ) ;
3333
34+ // All routes containing '/admin' are excluded
35+ expect ( result . staticRoutes . map ( r => r . path ) ) . toEqual ( [ '/' , '/about' , '/internal/secret' , '/public/page' ] ) ;
36+ expect ( result . dynamicRoutes . map ( r => r . path ) ) . toEqual ( [ '/users/:id' , '/secret-feature/:id' ] ) ;
37+ expect ( result . isrRoutes ) . toEqual ( [ '/blog' , '/internal/stats' ] ) ;
38+ } ) ;
39+
40+ it ( 'should exclude routes matching multiple string patterns' , ( ) => {
41+ const result = filterRouteManifest ( mockManifest , [ '/about' , '/blog' ] ) ;
42+
3443 expect ( result . staticRoutes . map ( r => r . path ) ) . toEqual ( [
3544 '/' ,
36- '/about ' ,
37- '/admin/dashboard' , // Not excluded - not exact match
45+ '/admin ' ,
46+ '/admin/dashboard' ,
3847 '/internal/secret' ,
3948 '/public/page' ,
4049 ] ) ;
50+ expect ( result . isrRoutes ) . toEqual ( [ '/admin/reports' , '/internal/stats' ] ) ;
4151 } ) ;
4252
43- it ( 'should exclude multiple exact matches' , ( ) => {
44- const result = filterRouteManifest ( mockManifest , [ '/admin' , '/about' , '/blog' ] ) ;
53+ it ( 'should match substrings anywhere in the route' , ( ) => {
54+ // 'secret' matches '/internal/secret' and '/secret-feature/:id'
55+ const result = filterRouteManifest ( mockManifest , [ 'secret' ] ) ;
4556
4657 expect ( result . staticRoutes . map ( r => r . path ) ) . toEqual ( [
4758 '/' ,
59+ '/about' ,
60+ '/admin' ,
4861 '/admin/dashboard' ,
49- '/internal/secret' ,
5062 '/public/page' ,
5163 ] ) ;
52- expect ( result . isrRoutes ) . toEqual ( [ '/admin/reports ' , '/internal/stats ' ] ) ;
64+ expect ( result . dynamicRoutes . map ( r => r . path ) ) . toEqual ( [ '/users/:id ' , '/admin/users/:id ' ] ) ;
5365 } ) ;
5466 } ) ;
5567
@@ -82,19 +94,8 @@ describe('routeManifestInjection.exclude', () => {
8294 expect ( result . dynamicRoutes . map ( r => r . path ) ) . toEqual ( [ '/users/:id' , '/admin/users/:id' ] ) ;
8395 } ) ;
8496
85- it ( 'should handle regex with global flag consistently across multiple routes' , ( ) => {
86- // Regex with `g` flag has stateful lastIndex - ensure it works correctly
87- const globalRegex = / a d m i n / g;
88- const result = filterRouteManifest ( mockManifest , [ globalRegex ] ) ;
89-
90- // All admin routes should be excluded, not just every other one
91- expect ( result . staticRoutes . map ( r => r . path ) ) . toEqual ( [ '/' , '/about' , '/internal/secret' , '/public/page' ] ) ;
92- expect ( result . dynamicRoutes . map ( r => r . path ) ) . toEqual ( [ '/users/:id' , '/secret-feature/:id' ] ) ;
93- expect ( result . isrRoutes ) . toEqual ( [ '/blog' , '/internal/stats' ] ) ;
94- } ) ;
95-
96- it ( 'should handle regex with global and case-insensitive flags' , ( ) => {
97- const result = filterRouteManifest ( mockManifest , [ / A D M I N / gi] ) ;
97+ it ( 'should handle case-insensitive regex' , ( ) => {
98+ const result = filterRouteManifest ( mockManifest , [ / A D M I N / i] ) ;
9899
99100 expect ( result . staticRoutes . map ( r => r . path ) ) . toEqual ( [ '/' , '/about' , '/internal/secret' , '/public/page' ] ) ;
100101 expect ( result . dynamicRoutes . map ( r => r . path ) ) . toEqual ( [ '/users/:id' , '/secret-feature/:id' ] ) ;
0 commit comments