@@ -6,6 +6,33 @@ import {
66 MiddlewareStatus ,
77} from '../../src/middleware' ;
88
9+ const middleware1 : Middleware < { value : number } , 'test' > = {
10+ id : 'middleware-1' ,
11+ handlers : {
12+ test : async ( { state, next } ) => {
13+ return next ( state ) ;
14+ } ,
15+ } ,
16+ } ;
17+
18+ const middleware2 : Middleware < { value : number } , 'test' > = {
19+ id : 'middleware-2' ,
20+ handlers : {
21+ test : async ( { state, next } ) => {
22+ return next ( state ) ;
23+ } ,
24+ } ,
25+ } ;
26+
27+ const middleware3 : Middleware < { value : number } , 'test' > = {
28+ id : 'middleware-3' ,
29+ handlers : {
30+ test : async ( { state, next } ) => {
31+ return next ( state ) ;
32+ } ,
33+ } ,
34+ } ;
35+
936describe ( 'MiddlewareExecutor' , ( ) => {
1037 let executor : MiddlewareExecutor < { value : number } , 'test' > ;
1138
@@ -301,33 +328,6 @@ describe('MiddlewareExecutor', () => {
301328
302329 describe ( 'setOrder' , ( ) => {
303330 it ( 'should reorder middleware based on provided order' , ( ) => {
304- const middleware1 : Middleware < { value : number } , 'test' > = {
305- id : 'middleware-1' ,
306- handlers : {
307- test : async ( { state, next } ) => {
308- return next ( state ) ;
309- } ,
310- } ,
311- } ;
312-
313- const middleware2 : Middleware < { value : number } , 'test' > = {
314- id : 'middleware-2' ,
315- handlers : {
316- test : async ( { state, next } ) => {
317- return next ( state ) ;
318- } ,
319- } ,
320- } ;
321-
322- const middleware3 : Middleware < { value : number } , 'test' > = {
323- id : 'middleware-3' ,
324- handlers : {
325- test : async ( { state, next } ) => {
326- return next ( state ) ;
327- } ,
328- } ,
329- } ;
330-
331331 executor . use ( [ middleware1 , middleware2 , middleware3 ] ) ;
332332
333333 executor . setOrder ( [ 'middleware-3' , 'middleware-1' , 'middleware-2' ] ) ;
@@ -371,6 +371,57 @@ describe('MiddlewareExecutor', () => {
371371 } ) ;
372372 } ) ;
373373
374+ describe ( 'remove' , ( ) => {
375+ it ( 'should remove existing middleware by single id' , ( ) => {
376+ executor . use ( [ middleware1 , middleware2 , middleware3 ] ) ;
377+
378+ executor . remove ( middleware2 . id ) ;
379+ // @ts -expect-error access private property for testing
380+ const middlewareList = ( executor as Middleware < { value : number } , 'test' > )
381+ . middleware ;
382+ expect ( middlewareList ) . toHaveLength ( 2 ) ;
383+ expect ( middlewareList [ 0 ] ) . toEqual ( middleware1 ) ;
384+ expect ( middlewareList [ 1 ] ) . toEqual ( middleware3 ) ;
385+ } ) ;
386+
387+ it ( 'should remove existing middleware by id array' , ( ) => {
388+ executor . use ( [ middleware1 , middleware2 , middleware3 ] ) ;
389+
390+ executor . remove ( [ middleware3 . id , middleware2 . id ] ) ;
391+ // @ts -expect-error access private property for testing
392+ const middlewareList = ( executor as Middleware < { value : number } , 'test' > )
393+ . middleware ;
394+ expect ( middlewareList ) . toHaveLength ( 1 ) ;
395+ expect ( middlewareList [ 0 ] ) . toEqual ( middleware1 ) ;
396+ } ) ;
397+
398+ it ( 'should not change existing middleware if id array is empty' , ( ) => {
399+ executor . use ( [ middleware1 , middleware2 , middleware3 ] ) ;
400+
401+ executor . remove ( [ ] ) ;
402+ // @ts -expect-error access private property for testing
403+ const middlewareList = ( executor as Middleware < { value : number } , 'test' > )
404+ . middleware ;
405+ expect ( middlewareList ) . toHaveLength ( 3 ) ;
406+ expect ( middlewareList [ 0 ] ) . toEqual ( middleware1 ) ;
407+ expect ( middlewareList [ 1 ] ) . toEqual ( middleware2 ) ;
408+ expect ( middlewareList [ 2 ] ) . toEqual ( middleware3 ) ;
409+ } ) ;
410+
411+ it ( 'should not change existing middleware if id is empty string' , ( ) => {
412+ executor . use ( [ middleware1 , middleware2 , middleware3 ] ) ;
413+
414+ executor . remove ( '' ) ;
415+ // @ts -expect-error access private property for testing
416+ const middlewareList = ( executor as Middleware < { value : number } , 'test' > )
417+ . middleware ;
418+ expect ( middlewareList ) . toHaveLength ( 3 ) ;
419+ expect ( middlewareList [ 0 ] ) . toEqual ( middleware1 ) ;
420+ expect ( middlewareList [ 1 ] ) . toEqual ( middleware2 ) ;
421+ expect ( middlewareList [ 2 ] ) . toEqual ( middleware3 ) ;
422+ } ) ;
423+ } ) ;
424+
374425 describe ( 'execute' , ( ) => {
375426 it ( 'should execute middleware chain in order' , async ( ) => {
376427 const middleware1 : Middleware < { value : number } , 'test' > = {
0 commit comments