@@ -271,26 +271,29 @@ let implicitConversionTest =
271271
272272 ]
273273
274- //---------------------------DI tests----------------------------------------
274+ //---------------------------Controller DI tests----------------------------------------
275275
276276type Dependency = { dep : IDependency }
277277
278+ //Include _di operations in controller
279+ open ControllerDI
280+
278281let diController = controller {
279- index ( fun ctx d ->
282+ index _ di ( fun ctx d ->
280283 d.dep.Call ()
281284 d.dep.Call ()
282285 let v = d.dep.Value() .ToString()
283286 Controller.text ctx v
284287 )
285288
286- show ( fun ctx ( d : IDependency ) ( id : int ) ->
289+ show _ di ( fun ctx ( d : IDependency ) ( id : int ) ->
287290 d.Call ()
288291 d.Call ()
289292 let v = ( id + d.Value()). ToString()
290293 Controller.text ctx v
291294 )
292295
293- add ( fun ctx ( d : ( IDependency * obj )) ->
296+ add _ di ( fun ctx ( d : ( IDependency * obj )) ->
294297 let ( d , _ ) = d
295298 d.Call ()
296299 d.Call ()
@@ -301,18 +304,66 @@ let diController = controller {
301304
302305[<Tests>]
303306let automaticDiTest =
304- let responseTestCase () = responseEndpointTestCase ( hostFromController diController)
305- testList " Endpoint Controller automatic DI" [
307+ let responseTestCase = responseEndpointTestCase ( hostFromController diController)
308+ testList " Controller automatic DI" [
306309 testCase " can inject record" <|
307- responseTestCase () " GET" " /" " 2"
310+ responseTestCase " GET" " /" " 2"
308311
309312 testCase " can inject interface" <|
310- responseTestCase () " GET" " /1" " 3"
313+ responseTestCase " GET" " /1" " 3"
311314
312315 testCase " can inject tupple" <|
313- responseTestCase () " GET" " /add" " 2"
316+ responseTestCase " GET" " /add" " 2"
314317 ]
315318
319+ //---------------------------Router DI tests----------------------------------------
320+
321+ type RoutDependency = { dep : IDependency }
322+
323+ //Include _di operations in rouer
324+ open RouterDI
325+ open Giraffe
326+
327+ let diRouter = router {
328+ get_ di " /" ( fun d ->
329+ d.dep.Call ()
330+ d.dep.Call ()
331+ let v = d.dep.Value() .ToString()
332+ text v
333+ )
334+
335+ getf_ di " /%d " ( fun ( d : IDependency ) ( id : int ) ->
336+ d.Call ()
337+ d.Call ()
338+ let v = ( id + d.Value()). ToString()
339+ text v
340+ )
341+
342+ get_ di " /add" ( fun ( d : ( IDependency * obj )) ->
343+ let ( d , _ ) = d
344+ d.Call ()
345+ d.Call ()
346+ let v = d.Value() .ToString()
347+ text v
348+ )
349+ }
350+
351+ [<Tests>]
352+ let routerDiTest =
353+ let responseTestCase = responseEndpointTestCase ( hostFromController diRouter)
354+ testList " Router automatic DI" [
355+ testCase " can inject record" <|
356+ responseTestCase " GET" " /" " 2"
357+
358+ testCase " can inject interface" <|
359+ responseTestCase " GET" " /1" " 3"
360+
361+ testCase " can inject tupple" <|
362+ responseTestCase " GET" " /add" " 2"
363+ ]
364+
365+
366+
316367//---------------------------Routing tests with string id----------------------------------------
317368
318369let showActionStrng ctx id =
0 commit comments