diff --git a/src/reitit/core.cljc b/src/reitit/core.cljc index 1c8b879b..4387d38f 100644 --- a/src/reitit/core.cljc +++ b/src/reitit/core.cljc @@ -19,15 +19,15 @@ (extend-protocol ExpandArgs - #?(:clj clojure.lang.Keyword + #?(:clj clojure.lang.Keyword :cljs cljs.core.Keyword) (expand [this] {:handler this}) - #?(:clj clojure.lang.PersistentArrayMap + #?(:clj clojure.lang.PersistentArrayMap :cljs cljs.core.PersistentArrayMap) (expand [this] this) - #?(:clj clojure.lang.PersistentHashMap + #?(:clj clojure.lang.PersistentHashMap :cljs cljs.core.PersistentHashMap) (expand [this] this) @@ -38,7 +38,7 @@ ([routes] (walk ["" []] routes)) ([[pacc macc] routes] - (letfn [(subwalk [p m r] + (letfn [(subwalk [p m r] (reduce #(into %1 (walk [p m] %2)) [] r))] (if (vector? (first routes)) (subwalk pacc macc routes) diff --git a/test/cljc/reitit/core_test.cljc b/test/cljc/reitit/core_test.cljc index e790e853..35bf79ad 100644 --- a/test/cljc/reitit/core_test.cljc +++ b/test/cljc/reitit/core_test.cljc @@ -2,37 +2,29 @@ (:require [clojure.test :refer [deftest testing is are]] [reitit.core :as reitit])) -(def routes2 - ["/api" {:mw [:api]} - ["/ping" :kikka] - ["/user/:id" {:parameters {:id String}} - ["/:sub-id" {:parameters {:sub-id String}}]] - ["/pong"] - ["/admin" {:mw [:admin] :roles #{:admin}} - ["/user" {:roles #{:user}}] - ["/db" {:mw [:db]}]]]) - (deftest reitit-test + (testing "bide sample" (let [routes [["/auth/login" :auth/login] ["/auth/recovery/token/:token" :auth/recovery] - ["/workspace/:project-uuid/:page-uuid" :workspace/page]]] - (is (= [["/auth/login" {:handler :auth/login}] - ["/auth/recovery/token/:token" {:handler :auth/recovery}] - ["/workspace/:project-uuid/:page-uuid" {:handler :workspace/page}]] - (reitit/resolve-routes routes))))) + ["/workspace/:project-uuid/:page-uuid" :workspace/page]] + expected [["/auth/login" {:handler :auth/login}] + ["/auth/recovery/token/:token" {:handler :auth/recovery}] + ["/workspace/:project-uuid/:page-uuid" {:handler :workspace/page}]]] + (is (= expected (reitit/resolve-routes routes))))) + (testing "ring sample" (let [routes ["/api" {:mw [:api]} - ["/ping" :kikka] - ["/user/:id" {:parameters {:id String}} - ["/:sub-id" {:parameters {:sub-id String}}]] - ["/pong"] - ["/admin" {:mw [:admin] :roles #{:admin}} - ["/user" {:roles #{:user}}] - ["/db" {:mw [:db]}]]]] - (is (= [["/api/ping" {:mw [:api], :handler :kikka}] - ["/api/user/:id/:sub-id" {:mw [:api], :parameters {:id String, :sub-id String}}] - ["/api/pong" {:mw [:api]}] - ["/api/admin/user" {:mw [:api :admin], :roles #{:user}}] - ["/api/admin/db" {:mw [:api :admin :db], :roles #{:admin}}]] - (reitit/resolve-routes {:mw :into} routes)))))) \ No newline at end of file + ["/ping" :kikka] + ["/user/:id" {:parameters {:id String}} + ["/:sub-id" {:parameters {:sub-id String}}]] + ["/pong"] + ["/admin" {:mw [:admin] :roles #{:admin}} + ["/user" {:roles #{:user}}] + ["/db" {:mw [:db]}]]] + expected [["/api/ping" {:mw [:api], :handler :kikka}] + ["/api/user/:id/:sub-id" {:mw [:api], :parameters {:id String, :sub-id String}}] + ["/api/pong" {:mw [:api]}] + ["/api/admin/user" {:mw [:api :admin], :roles #{:user}}] + ["/api/admin/db" {:mw [:api :admin :db], :roles #{:admin}}]]] + (is (= expected (reitit/resolve-routes {:mw :into} routes))))))