add test of lack.middleware.mount.

This commit is contained in:
Rudolph-Miller 2015-06-11 22:18:40 +09:00
parent 593f8b6d88
commit 5f2ffe52fe
2 changed files with 91 additions and 0 deletions

View file

@ -0,0 +1,19 @@
(in-package :cl-user)
(defpackage t-lack-middleware-mount-asd
(:use :cl :asdf))
(in-package :t-lack-middleware-mount-asd)
(defsystem t-lack-middleware-mount
:author "Rudolph Miller"
:license "LLGPL"
:depends-on (:lack
:lack-test
:lack-component
:lack-middleware-mount
:prove)
:components
((:test-file "t/middleware/mount"))
:defsystem-depends-on (:prove-asdf)
:perform (test-op :after (op c)
(funcall (intern #.(string :run-test-system) :prove) c)))

72
t/middleware/mount.lisp Normal file
View file

@ -0,0 +1,72 @@
(in-package :cl-user)
(defpackage t.lack.middleware.mount
(:use :cl
:lack
:lack.test
:lack.component
:prove))
(in-package :t.lack.middleware.mount)
(plan 2)
(defclass test-component (lack-component) ())
(defmethod call ((app test-component) env)
(declare (ignore env))
'(200 () "mount2"))
(subtest "dispatch"
(macrolet ((mount-test (component)
`(let* ((not-mounted '(200 () ("not-mounted")))
(app
(builder
(:mount "/mount" ,component)
(lambda (env)
(declare (ignore env))
not-mounted))))
(let ((expected (funcall (to-app ,component) (generate-env "/")))
(result1 (funcall app (generate-env "/mount")))
(result2 (funcall app (generate-env "/mount/test")))
(result3 (funcall app (generate-env "/test"))))
(is result1
expected
"string=.")
(is result2
expected
"subseq.")
(is result3
not-mounted
"t.")))))
(subtest "(lambda (env) ...)"
(mount-test
(lambda (env)
(declare (ignore env))
'(200 () ("mount")))))
(subtest "lack-component"
(mount-test (make-instance 'test-component)))))
(subtest "path-info"
(macrolet ((is-path-info (env expected &optional comment)
`(is (getf ,env :path-info)
,expected
,@(when comment (list comment)))))
(let* ((response '(200 () ("ok")))
(app
(builder
(:mount "/mount1"
(lambda (env)
(is-path-info env "/" "string=.")
response))
(:mount "/mount2"
(lambda (env)
(is-path-info env "/test" "subseq.")
response))
(lambda (env)
(is-path-info env "/test" "t.")
response))))
(dolist (path (list "/mount1" "/mount2/test" "/test"))
(funcall app (generate-env path))))))
(finalize)