myway/t/myway.lisp
2019-09-30 13:21:32 +02:00

70 lines
1.7 KiB
Common Lisp

(in-package :cl-user)
(defpackage myway-test
(:use :cl
:myway
:prove))
(in-package :myway-test)
(plan nil)
(defparameter *mapper* (make-mapper))
(is (find-route *mapper* "/") nil)
(is-values (dispatch *mapper* "/" :method :GET) '(nil nil))
(connect *mapper* "/"
(lambda (params)
(declare (ignore params))
"Hello, World!"))
(ok (find-route *mapper* "/"))
(is (find-route *mapper* "/" :method :POST) nil)
(is (dispatch *mapper* "/" :method :GET) "Hello, World!")
(connect *mapper* "/"
(lambda (params)
(declare (ignore params))
"Hello, World!")
:name :test)
(ok (find-route-by-name *mapper* :test))
(is (find-route-by-name *mapper* :test) (find-route *mapper* "/" :name :test))
(connect *mapper* "/post"
(lambda (params)
(declare (ignore params))
"posted")
:method :POST)
(is (find-route *mapper* "/post") nil)
(ok (find-route *mapper* "/post" :method :POST))
(is-values (dispatch *mapper* "/post" :method :GET) '(nil nil))
(is (dispatch *mapper* "/post" :method :POST) "posted")
(connect *mapper* "/new"
(lambda (params)
(declare (ignore params))
"new"))
(is (dispatch *mapper* "/new" :method :GET) "new")
(is (funcall (to-app *mapper*)
'(:request-method :GET :path-info "/"))
"Hello, World!")
(connect *mapper* "/id/:n"
(lambda (params)
(if (oddp (parse-integer (getf params :n)))
"odd"
(next-route)))
:name 'odd-id)
(connect *mapper* "/id/*"
(lambda (params)
(declare (ignore params))
"even")
:name 'even-id)
(is (dispatch *mapper* "/id/1") "odd")
(is (dispatch *mapper* "/id/2") "even")
(finalize)