Skip to content

Commit f03c5c0

Browse files
Add tests for DI in edpoint routing
1 parent c97ca79 commit f03c5c0

File tree

1 file changed

+60
-9
lines changed

1 file changed

+60
-9
lines changed

tests/Saturn.UnitTests/EndpointControllerTests.fs

Lines changed: 60 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -271,26 +271,29 @@ let implicitConversionTest =
271271

272272
]
273273

274-
//---------------------------DI tests----------------------------------------
274+
//---------------------------Controller DI tests----------------------------------------
275275

276276
type Dependency = {dep : IDependency}
277277

278+
//Include _di operations in controller
279+
open ControllerDI
280+
278281
let 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>]
303306
let 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

318369
let showActionStrng ctx id =

0 commit comments

Comments
 (0)