@@ -27,11 +27,15 @@ describe('Middleware module', () => {
27
27
28
28
it ( 'registers successfully with valid inputs' , ( ) => {
29
29
const id = registerMiddleware ( 'pre' , 'products' , 'create' , ( ) => { } ) ;
30
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
31
+ globalThis . __registeredMiddlewareIds . push ( id ) ;
30
32
expect ( typeof id ) . toBe ( 'string' ) ;
31
33
} ) ;
32
34
33
35
it ( 'registers multiple middleware if method is an array' , ( ) => {
34
36
const ids = registerMiddleware ( 'post' , 'orders' , [ 'create' , 'update' ] , ( ) => { } ) ;
37
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
38
+ globalThis . __registeredMiddlewareIds . push ( ...ids ) ;
35
39
expect ( Array . isArray ( ids ) ) . toBe ( true ) ;
36
40
expect ( ids . length ) . toBe ( 2 ) ;
37
41
ids . forEach ( ( id ) => expect ( typeof id ) . toBe ( 'string' ) ) ;
@@ -45,6 +49,8 @@ describe('Middleware module', () => {
45
49
46
50
it ( 'removes existing middleware and returns true' , ( ) => {
47
51
const id = registerMiddleware ( 'pre' , 'products' , 'create' , ( ) => { } ) ;
52
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
53
+ globalThis . __registeredMiddlewareIds . push ( id ) ;
48
54
expect ( unregisterMiddleware ( id ) ) . toBe ( true ) ;
49
55
} ) ;
50
56
@@ -56,7 +62,9 @@ describe('Middleware module', () => {
56
62
describe ( 'executeMiddleware' , ( ) => {
57
63
it ( 'calls middleware callback once' , async ( ) => {
58
64
const fn = jest . fn ( ) ;
59
- registerMiddleware ( 'pre' , 'products' , 'create' , fn ) ;
65
+ const id = registerMiddleware ( 'pre' , 'products' , 'create' , fn ) ;
66
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
67
+ globalThis . __registeredMiddlewareIds . push ( id ) ;
60
68
const res = { } ;
61
69
await executeMiddleware ( 'pre' , 'products' , 'create' , res ) ;
62
70
expect ( fn ) . toHaveBeenCalledTimes ( 1 ) ;
@@ -65,7 +73,9 @@ describe('Middleware module', () => {
65
73
66
74
it ( 'calls middleware multiple times if method array and multiple res' , async ( ) => {
67
75
const fn = jest . fn ( ) ;
68
- registerMiddleware ( 'pre' , 'products' , [ 'create' , 'update' ] , fn ) ;
76
+ const ids = registerMiddleware ( 'pre' , 'products' , [ 'create' , 'update' ] , fn ) ;
77
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
78
+ globalThis . __registeredMiddlewareIds . push ( ...ids ) ;
69
79
const resArray = [ { } , { } ] ;
70
80
await executeMiddleware ( 'pre' , 'products' , 'create' , resArray ) ;
71
81
await executeMiddleware ( 'pre' , 'products' , 'update' , resArray ) ;
@@ -74,7 +84,9 @@ describe('Middleware module', () => {
74
84
75
85
it ( 'does not call middleware if type or method does not match' , async ( ) => {
76
86
const fn = jest . fn ( ) ;
77
- registerMiddleware ( 'pre' , 'products' , 'create' , fn ) ;
87
+ const id = registerMiddleware ( 'pre' , 'products' , 'create' , fn ) ;
88
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
89
+ globalThis . __registeredMiddlewareIds . push ( id ) ;
78
90
await executeMiddleware ( 'post' , 'products' , 'create' , { } ) ;
79
91
expect ( fn ) . not . toHaveBeenCalled ( ) ;
80
92
} ) ;
@@ -83,9 +95,46 @@ describe('Middleware module', () => {
83
95
const errorFn = jest . fn ( async ( ) => {
84
96
throw new Error ( 'fail' ) ;
85
97
} ) ;
86
- registerMiddleware ( 'pre' , 'products' , 'create' , errorFn ) ;
98
+ const id = registerMiddleware ( 'pre' , 'products' , 'create' , errorFn ) ;
99
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
100
+ globalThis . __registeredMiddlewareIds . push ( id ) ;
87
101
await expect ( executeMiddleware ( 'pre' , 'products' , 'create' , { } ) ) . rejects . toThrow ( 'fail' ) ;
88
102
expect ( errorFn ) . toHaveBeenCalledTimes ( 1 ) ;
89
103
} ) ;
90
104
} ) ;
105
+
106
+ describe ( 'wildcard middleware' , ( ) => {
107
+ it ( 'calls middleware for any method when method is *' , async ( ) => {
108
+ const fn = jest . fn ( ) ;
109
+ const id = registerMiddleware ( 'pre' , 'products' , '*' , fn ) ;
110
+ globalThis . __registeredMiddlewareIds = globalThis . __registeredMiddlewareIds || [ ] ;
111
+ globalThis . __registeredMiddlewareIds . push ( id ) ;
112
+ await executeMiddleware ( 'pre' , 'products' , 'create' , { } ) ;
113
+ await executeMiddleware ( 'pre' , 'products' , 'update' , { } ) ;
114
+ expect ( fn ) . toHaveBeenCalledTimes ( 2 ) ;
115
+ } ) ;
116
+
117
+ it ( 'does not call middleware for type wildcard' , async ( ) => {
118
+ const fn = jest . fn ( ) ;
119
+ // type wildcard nem támogatott
120
+ expect ( ( ) => registerMiddleware ( '*' , 'products' , 'create' , fn ) ) . toThrow ( 'Invalid middleware type: *' ) ;
121
+ } ) ;
122
+
123
+ it ( 'does not call middleware for collection wildcard' , async ( ) => {
124
+ const fn = jest . fn ( ) ;
125
+ // collection wildcard nem támogatott
126
+ expect ( ( ) => registerMiddleware ( 'pre' , '*' , 'create' , fn ) ) . toThrow ( 'Invalid middleware collection: *' ) ;
127
+ } ) ;
128
+ } ) ;
129
+
130
+ afterEach ( ( ) => {
131
+ // Az összes regisztrált middleware eltávolítása
132
+ // A registerMiddleware visszatérési értéke lehet string vagy tömb
133
+ if ( globalThis . __registeredMiddlewareIds ) {
134
+ for ( const id of globalThis . __registeredMiddlewareIds ) {
135
+ unregisterMiddleware ( id ) ;
136
+ }
137
+ globalThis . __registeredMiddlewareIds = [ ] ;
138
+ }
139
+ } ) ;
91
140
} ) ;
0 commit comments