diff options
| author | Jakob L. Kreuze | 2026-07-11 12:50:07 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze | 2026-07-11 15:12:48 -0400 |
| commit | 31c871da155e2c7ef5e1d825b40702d6ba1c9545 (patch) | |
| tree | 44e8a8eb2b9d57071c175c4ff963a16b504f6e54 /tests/router.scm | |
| parent | 852eb83cd9e78a8428d4a1175ed162b0e92e4681 (diff) | |
Primordial router
Diffstat (limited to 'tests/router.scm')
| -rw-r--r-- | tests/router.scm | 48 |
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) |