diff options
Diffstat (limited to 'test/reverse_routing')
-rw-r--r-- | test/reverse_routing/core_test.clj | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/test/reverse_routing/core_test.clj b/test/reverse_routing/core_test.clj new file mode 100644 index 0000000..d611dea --- /dev/null +++ b/test/reverse_routing/core_test.clj @@ -0,0 +1,50 @@ +(ns reverse-routing.core-test + (:use clojure.test + reverse-routing.core + [compojure.core :only [GET]])) + +(defn make-request [handler uri] + (-> {:request-method :get + :scheme :http + :uri uri + :remote-addr "127.0.0.1" + :server-port 8080 + :server-name "something"} + handler + :body)) + +(deftest test-basic-route + (let [handler (-> (routes + (register-route :user + (GET "/user/:id" [id] (str "user " id))) + (GET "/succeed" [] (url-for :user 10)) + (GET "/fail1" [] (url-for :user)) + (GET "/fail2" [] (url-for :user 10 20))) + wrap-reverse-routing)] + (is (= (make-request handler "/succeed") "/user/10")) + (is (thrown? java.lang.AssertionError (make-request handler "/fail1"))) + (is (thrown? java.lang.AssertionError (make-request handler "/fail2"))))) + +(deftest test-contest-routes + (let [handler (-> (routes + (register-route :user + (GET "/user/" [id] (str "user list"))) + (context "/user/:id" [] + (register-route :user + (GET "/" [id] (str "user " id))) + (register-route :edit-user + (GET "/edit" [id] (str "edit user " id)))) + (GET "/succeed1" [] (url-for :user)) + (GET "/succeed2" [] (url-for :user 10)) + (GET "/succeed3" [] (url-for :edit-user 10)) + (GET "/fail1" [] (url-for :user 10 20)) + (GET "/fail2" [] (url-for :edit-user)) + (GET "/fail3" [] (url-for :edit-user 10 20))) + wrap-reverse-routing)] + (is (= (make-request handler "/succeed1") "/user/")) + (is (= (make-request handler "/succeed2") "/user/10/")) + (is (= (make-request handler "/succeed3") "/user/10/edit")) + + (is (thrown? java.lang.AssertionError (make-request handler "/fail1"))) + (is (thrown? java.lang.AssertionError (make-request handler "/fail2"))) + (is (thrown? java.lang.AssertionError (make-request handler "/fail3"))))) |