aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJakob L. Kreuze2026-07-11 12:50:07 -0400
committerJakob L. Kreuze2026-07-11 15:12:48 -0400
commit31c871da155e2c7ef5e1d825b40702d6ba1c9545 (patch)
tree44e8a8eb2b9d57071c175c4ff963a16b504f6e54 /tests
parent852eb83cd9e78a8428d4a1175ed162b0e92e4681 (diff)
Primordial router
Diffstat (limited to 'tests')
-rw-r--r--tests/router.scm48
1 files changed, 47 insertions, 1 deletions
diff --git a/tests/router.scm b/tests/router.scm
index 5bdbd51..6f1ddfb 100644
--- a/tests/router.scm
+++ b/tests/router.scm
@@ -1,10 +1,14 @@
(use-modules (srfi srfi-11)
(srfi srfi-64)
- (weeb router))
+ (weeb router)
+ (weeb request)
+ (weeb struct))
;; Private imports for testing purposes.
(define uri-template->regexp-string
(@@ (weeb router) uri-template->regexp-string))
+(define handle-route
+ (@@ (weeb router) handle-route))
(test-runner-current (test-runner-simple))
@@ -30,4 +34,46 @@
(test-equal "/api/([^/]+)/data" re)
(test-equal '(version) vars)))
+(test-group "handle route"
+ (define (handler r id)
+ (list id))
+ (define-router router
+ ("/user/:id:" (GET) handler))
+ (let* ((req (make-struct <request> 'GET "/user/123/" #f #f #f))
+ (route-obj (car router)))
+ (test-equal '("123") (handle-route req route-obj)))
+ (let ((req (make-struct <request> 'POST "/user/123/" #f #f #f))
+ (route-obj (car router)))
+ (test-eqv #f (handle-route req route-obj))))
+
+(test-group "iter-routes 1"
+ (define (static-handler r) "static")
+ (define (api-handler r version) (list version))
+ (define-router router
+ ("/static/" (GET) static-handler)
+ ("/api/:version:/data" (GET) api-handler))
+ (let ((req (make-struct <request> 'GET "/api/v1/data" #f #f #f)))
+ (test-equal '("v1") (iter-routes req router))))
+
+(test-group "iter-routes 2"
+ (define (handler r org_id user_id) (list org_id user_id))
+ (define-router router
+ ("/org/:org_id:/user/:user_id:/" (GET) handler))
+ (let ((req (make-struct <request> 'GET "/org/42/user/99/" #f #f #f)))
+ (test-equal '("42" "99") (iter-routes req router))))
+
+(test-group "edge cases 1"
+ (define (handler request) "ok")
+ (define-router router
+ ("/health" (GET) handler))
+ (let ((req (make-struct <request> 'GET "/health" #f #f #f)))
+ (test-equal "ok" (iter-routes req router))))
+
+(test-group "edge cases 2"
+ (define (handler request) "home")
+ (define-router router
+ ("/" (GET) handler))
+ (let ((req (make-struct <request> 'GET "/" #f #f #f)))
+ (test-equal "home" (iter-routes req router))))
+
(test-end)

© 2015 - 2026 Jakob L. Kreuze