Add test for set-routes

This commit is contained in:
Akira Tempaku 2024-12-22 18:33:49 +09:00
commit 7641ec5f61
10 changed files with 115 additions and 9 deletions

View file

@ -1,18 +1,18 @@
(defpackage #:ningle-fbr-test/router
(:use #:cl
#:rove)
(:import-from #:ningle)
(:import-from #:lack)
(:import-from #:lack/test
#:testing-app
#:request)
(:import-from #:ningle-fbr/router
#:pathname->path
#:path->uri
#:path->package))
#:path->package
#:pathname->path
#:set-routes))
(in-package #:ningle-fbr-test/router)
(deftest router-test
(testing "pathname->path"
(ok (string= (pathname->path #P"/home/app/src/routes/foo.lisp"
#P"/home/app/src/routes/")
"/foo"))))
(deftest uri-test
(testing "normal path"
(ok (string= (path->uri "/foo") "/foo"))
@ -24,7 +24,7 @@
(testing "dynamic path"
(ok (string= (path->uri "/user/<id>") "/user/:id"))
(ok (string= (path->uri "/location/<country>/<city>") "/location/:country/:city" ))))
(ok (string= (path->uri "/location/<country>/<city>") "/location/:country/:city"))))
(deftest package-test
(testing "normal case"
@ -32,3 +32,52 @@
:app/routes/foo))
(ok (eq (path->package "/foo" :app "somedir/routes")
:app/somedir/routes/foo))))
(deftest router-test
(testing "pathname->path"
(ok (string= (pathname->path #P"/home/app/src/routes/foo.lisp"
#P"/home/app/src/routes/")
"/foo")))
(testing "set-routes"
(testing-app (let ((app (make-instance 'ningle:app)))
(set-routes app
:system :ningle-fbr-test
:target-dir-path "routes")
(lack:builder app))
(multiple-value-bind (body status headers)
(request "/")
(declare (ignore headers))
(ok (string= body "ok"))
(ok (eql status 200)))
(multiple-value-bind (body status headers)
(request "/hello")
(declare (ignore headers))
(ok (string= body "ok"))
(ok (eql status 200)))
(multiple-value-bind (body status headers)
(request "/nested/page")
(declare (ignore headers))
(ok (string= body "ok"))
(ok (eql status 200)))
(multiple-value-bind (body status headers)
(request "/users")
(declare (ignore headers))
(ok (string= body "ok"))
(ok (eql status 200)))
(multiple-value-bind (body status headers)
(request "/users/bob")
(declare (ignore headers))
(ok (string= body "bob"))
(ok (eql status 200)))
(multiple-value-bind (body status headers)
(request "/missing")
(declare (ignore headers))
(ok (string= body "Not Found"))
(ok (eql status 404))))))