@@ -97,59 +97,83 @@ describe("MiddlewareStack", () => {
97
97
it ( "should allow adding middleware relatively" , async ( ) => {
98
98
const stack = new MiddlewareStack < input , output > ( ) ;
99
99
type MW = InitializeMiddleware < input , output > ;
100
- stack . addRelativeTo ( getConcatMiddleware ( "G " ) as MW , {
101
- name : "G " ,
100
+ stack . addRelativeTo ( getConcatMiddleware ( "H " ) as MW , {
101
+ name : "H " ,
102
102
relation : "after" ,
103
- toMiddleware : "F "
103
+ toMiddleware : "G "
104
104
} ) ;
105
105
stack . addRelativeTo ( getConcatMiddleware ( "A" ) as MW , {
106
106
name : "A" ,
107
107
relation : "after" ,
108
108
toMiddleware : "nonExist"
109
109
} ) ;
110
- stack . addRelativeTo ( getConcatMiddleware ( "B" ) as MW , {
111
- name : "B" ,
112
- relation : "after" ,
113
- toMiddleware : "A"
114
- } ) ;
115
110
stack . addRelativeTo ( getConcatMiddleware ( "C" ) as MW , {
116
111
name : "C" ,
117
112
relation : "after" ,
118
113
toMiddleware : "A"
119
114
} ) ;
120
- stack . add ( getConcatMiddleware ( "F" ) as MW , {
121
- name : "F" ,
122
- priority : "low"
115
+ stack . addRelativeTo ( getConcatMiddleware ( "B" ) as MW , {
116
+ name : "B" ,
117
+ relation : "after" ,
118
+ toMiddleware : "A"
123
119
} ) ;
124
120
stack . addRelativeTo ( getConcatMiddleware ( "D" ) as MW , {
125
121
name : "D" ,
126
- relation : "before" ,
127
- toMiddleware : "F"
122
+ relation : "after" ,
123
+ toMiddleware : "C"
124
+ } ) ;
125
+ stack . add ( getConcatMiddleware ( "G" ) as MW , {
126
+ name : "G" ,
127
+ priority : "low"
128
128
} ) ;
129
129
stack . addRelativeTo ( getConcatMiddleware ( "E" ) as MW , {
130
130
name : "E" ,
131
131
relation : "before" ,
132
132
toMiddleware : "F"
133
133
} ) ;
134
- stack . addRelativeTo ( getConcatMiddleware ( "H " ) as MW , {
135
- name : "H " ,
134
+ stack . addRelativeTo ( getConcatMiddleware ( "F " ) as MW , {
135
+ name : "F " ,
136
136
relation : "before" ,
137
- toMiddleware : "I "
137
+ toMiddleware : "G "
138
138
} ) ;
139
139
stack . addRelativeTo ( getConcatMiddleware ( "I" ) as MW , {
140
140
name : "I" ,
141
+ relation : "before" ,
142
+ toMiddleware : "J"
143
+ } ) ;
144
+ stack . addRelativeTo ( getConcatMiddleware ( "J" ) as MW , {
145
+ name : "J" ,
141
146
relation : "after" ,
142
- toMiddleware : "H "
147
+ toMiddleware : "I "
143
148
} ) ;
144
149
const inner = jest . fn ( ) ;
145
150
146
151
const composed = stack . resolve ( inner , { } as any ) ;
147
152
await composed ( { input : [ ] } ) ;
148
153
149
154
expect ( inner . mock . calls . length ) . toBe ( 1 ) ;
150
- expect ( inner ) . toBeCalledWith ( {
151
- input : [ "A" , "B" , "C" , "H" , "I" , "D" , "E" , "F" , "G" ]
152
- } ) ;
155
+ const concatenated = inner . mock . calls [ 0 ] [ 0 ] . input ;
156
+ expect ( concatenated . indexOf ( "H" ) ) . toBeGreaterThan (
157
+ concatenated . indexOf ( "G" )
158
+ ) ;
159
+ expect ( concatenated . indexOf ( "C" ) ) . toBeGreaterThan (
160
+ concatenated . indexOf ( "A" )
161
+ ) ;
162
+ expect ( concatenated . indexOf ( "B" ) ) . toBeGreaterThan (
163
+ concatenated . indexOf ( "A" )
164
+ ) ;
165
+ expect ( concatenated . indexOf ( "D" ) ) . toBeGreaterThan (
166
+ concatenated . indexOf ( "C" )
167
+ ) ;
168
+ expect ( concatenated . indexOf ( "E" ) ) . toBeLessThan ( concatenated . indexOf ( "F" ) ) ;
169
+ expect ( concatenated . indexOf ( "F" ) ) . toBeLessThan ( concatenated . indexOf ( "G" ) ) ;
170
+ expect ( concatenated . indexOf ( "I" ) ) . toBeLessThan ( concatenated . indexOf ( "J" ) ) ;
171
+ expect ( concatenated . indexOf ( "J" ) ) . toBeGreaterThan (
172
+ concatenated . indexOf ( "I" )
173
+ ) ;
174
+ expect ( concatenated . indexOf ( "H" ) ) . toBeGreaterThan (
175
+ concatenated . indexOf ( "G" )
176
+ ) ;
153
177
} ) ;
154
178
155
179
it ( "should allow cloning" , async ( ) => {
@@ -187,26 +211,26 @@ describe("MiddlewareStack", () => {
187
211
188
212
it ( "should allow combining stacks" , async ( ) => {
189
213
const stack = new MiddlewareStack < input , output > ( ) ;
190
- stack . add ( getConcatMiddleware ( "second " ) as InitializeMiddleware <
214
+ stack . add ( getConcatMiddleware ( "first " ) as InitializeMiddleware <
191
215
input ,
192
216
output
193
217
> ) ;
194
218
stack . add (
195
- getConcatMiddleware ( "first " ) as InitializeMiddleware < input , output > ,
219
+ getConcatMiddleware ( "second " ) as InitializeMiddleware < input , output > ,
196
220
{
197
- name : "first " ,
198
- priority : "high "
221
+ name : "second " ,
222
+ priority : "low "
199
223
}
200
224
) ;
201
225
202
226
const secondStack = new MiddlewareStack < input , output > ( ) ;
203
227
secondStack . add (
204
228
getConcatMiddleware ( "fourth" ) as FinalizeRequestMiddleware < input , output > ,
205
- { step : "build" }
229
+ { step : "build" , priority : "low" }
206
230
) ;
207
- secondStack . add (
231
+ secondStack . addRelativeTo (
208
232
getConcatMiddleware ( "third" ) as FinalizeRequestMiddleware < input , output > ,
209
- { step : "build" , priority : "high " }
233
+ { step : "build" , relation : "after" , toMiddleware : "second " }
210
234
) ;
211
235
212
236
let inner = jest . fn ( ( { input } : DeserializeHandlerArguments < input > ) => {
@@ -218,11 +242,11 @@ describe("MiddlewareStack", () => {
218
242
expect ( inner . mock . calls . length ) . toBe ( 1 ) ;
219
243
220
244
secondStack . add (
221
- getConcatMiddleware ( "first " ) as FinalizeRequestMiddleware < input , output > ,
222
- { step : "build" , priority : "high" , name : "first " }
245
+ getConcatMiddleware ( "second " ) as FinalizeRequestMiddleware < input , output > ,
246
+ { step : "build" , priority : "high" , name : "second " }
223
247
) ;
224
248
expect ( ( ) => stack . concat ( secondStack ) ) . toThrow (
225
- "Duplicated middleware name 'first '"
249
+ "Duplicated middleware name 'second '"
226
250
) ;
227
251
} ) ;
228
252
0 commit comments