diff options
Diffstat (limited to 'test/reverse_routing')
-rw-r--r-- | test/reverse_routing/core_test.clj | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/test/reverse_routing/core_test.clj b/test/reverse_routing/core_test.clj deleted file mode 100644 index fb37c94..0000000 --- a/test/reverse_routing/core_test.clj +++ /dev/null @@ -1,168 +0,0 @@ -(ns reverse-routing.core-test - (:use clojure.test - reverse-routing.core - [compojure.core :only [GET]])) - -(defn make-request [handler uri] - ;; Technically most of this map is required by the ring spec - ;; I'm fairly sure we could get away with not having most of it - (-> {: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 (-> (register-route :user - (GET "/succeed" [id] (url-for :user 10))) - wrap-reverse-routing)] - (is (= (make-request handler "/succeed") "/user/10")))) - -(-> (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 - (make-request "/succeed")) - -(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 (nil? (make-request handler "/fail1"))) - (is (nil? (make-request handler "/fail2"))))) - -(-> (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 - (make-request "/fail2")) - -(deftest test-context-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 (nil? (make-request handler "/fail1"))) - (is (nil? (make-request handler "/fail2"))) - (is (nil? (make-request handler "/fail3"))))) - -(deftest test-context-in-context-routes - (let [handler (-> (routes - (context "/user" [] - (register-route :user - (GET "/" [id] (str "user list"))) - (context "/:id" [id] - (register-route :user - (GET "/" [] (str "user " id))) - (register-route :edit-user - (GET "/edit" [] (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 (nil? (make-request handler "/fail1"))) - (is (nil? (make-request handler "/fail2"))) - (is (nil? (make-request handler "/fail3"))))) - - -(deftest test-with-rebinding-vars - (with-local-vars [subroutes (register-route :user - (GET "/user" [] (str "user")))] - (let [handler (-> (routes - subroutes - (GET "/succeed" [] (url-for :user)) - (GET "/fail" [] (url-for :user 10))) - wrap-reverse-routing)] - (is (= (make-request handler "/succeed") "/user")) - (is (nil? (make-request handler "/fail"))) - - (var-set subroutes (register-route :user - (GET "/not-user" [] (str "user")))) - (is (= (make-request handler "/succeed") "/not-user")) - (is (nil? (make-request handler "/fail")))))) - -(deftest top-level-is-a-var - (with-local-vars [bare-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)))] - (let [handler (wrap-reverse-routing bare-handler)] - (is (= (make-request handler "/succeed") "/user/10")) - (is (nil? (make-request handler "/fail1"))) - (is (nil? (make-request handler "/fail2")))))) - - -(deftest context-requiring-not-nil-value - (let [handler (-> (routes - (context "/:type" [type] - (if (not= type nil) - (register-route :get-object - (GET "/:id" [id] - (str [type id]))))) - (GET "/succeed" [] (url-for :get-object "user" 10)) - (GET "/fail" [] (url-for :get-object nil 10))) - wrap-reverse-routing)] - (is (= (make-request handler "/succeed"), "/user/10")) - (is (nil? (make-request handler "/fail"))))) - -(deftest context-with-limited-options - (let [valid-type? #{"user"} - handler (-> (routes - (context "/:type" [type] - (when-routes (valid-type? type) - (register-route :get-object - (GET "/:id" [id] - (str [type id]))))) - (GET "/succeed" [] (url-for :get-object "user" 10)) - (GET "/fail1" [] (url-for :get-object nil 10)) - (GET "/fail2" [] (url-for :get-object "person" 10))) - wrap-reverse-routing)] - (is (= (make-request handler "/succeed"), "/user/10")) - (is (nil? (make-request handler "/fail1"))) - (is (nil? (make-request handler "/fail2"))))) |