diff options
| author | Jakob L. Kreuze | 2026-07-10 16:05:16 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze | 2026-07-10 16:05:16 -0400 |
| commit | d6472d2ee6a5a3f4b85a0cf4aec269915e4929d9 (patch) | |
| tree | 17724373c33981f18c0f7bef3efba6d012e160ae /tests | |
| parent | 5a298f0550cf6eab5b8be7784d3f76695cf59bec (diff) | |
Regex transformation for router
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/router.scm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/router.scm b/tests/router.scm new file mode 100644 index 0000000..5bdbd51 --- /dev/null +++ b/tests/router.scm @@ -0,0 +1,33 @@ +(use-modules (srfi srfi-11) + (srfi srfi-64) + (weeb router)) + +;; Private imports for testing purposes. +(define uri-template->regexp-string + (@@ (weeb router) uri-template->regexp-string)) + +(test-runner-current (test-runner-simple)) + +(test-begin "weeb-router") + +(test-group "simple static route" + (let-values (((re vars) (uri-template->regexp-string "/health"))) + (test-equal "/health" re) + (test-equal '() vars))) + +(test-group "single variable route" + (let-values (((re vars) (uri-template->regexp-string "/user/:id:"))) + (test-equal "/user/([^/]+)" re) + (test-equal '(id) vars))) + +(test-group "multiple variables with trailing slash" + (let-values (((re vars) (uri-template->regexp-string "/org/:org_id:/user/:user_id:/"))) + (test-equal "/org/([^/]+)/user/([^/]+)" re) + (test-equal '(org_id user_id) vars))) + +(test-group "middle variables" + (let-values (((re vars) (uri-template->regexp-string "/api/:version:/data"))) + (test-equal "/api/([^/]+)/data" re) + (test-equal '(version) vars))) + +(test-end) |