mirror of
https://github.com/metosin/reitit.git
synced 2025-12-17 00:11:11 +00:00
use fn? instead of fspec with router options
fspec fails for some reason. related? http://github.com/walmartlabs/lacinia/pull/112
This commit is contained in:
parent
7d4db18000
commit
b4855699b5
3 changed files with 45 additions and 39 deletions
|
|
@ -30,7 +30,7 @@
|
||||||
(expand [_ _]))
|
(expand [_ _]))
|
||||||
|
|
||||||
(defn walk [data {:keys [path meta routes expand]
|
(defn walk [data {:keys [path meta routes expand]
|
||||||
:or {path "", meta [], routes [], expand expand}
|
:or {meta [], routes [], expand expand}
|
||||||
:as opts}]
|
:as opts}]
|
||||||
(letfn
|
(letfn
|
||||||
[(walk-many [p m r]
|
[(walk-many [p m r]
|
||||||
|
|
@ -245,7 +245,7 @@
|
||||||
|
|
||||||
| key | description |
|
| key | description |
|
||||||
| -------------|-------------|
|
| -------------|-------------|
|
||||||
| `:path` | Base-path for routes (default `\"\"`)
|
| `:path` | Base-path for routes
|
||||||
| `:routes` | Initial resolved routes (default `[]`)
|
| `:routes` | Initial resolved routes (default `[]`)
|
||||||
| `:meta` | Initial route meta (default `{}`)
|
| `:meta` | Initial route meta (default `{}`)
|
||||||
| `:expand` | Function of `arg opts => meta` to expand route arg to route meta-data (default `reitit.core/expand`)
|
| `:expand` | Function of `arg opts => meta` to expand route arg to route meta-data (default `reitit.core/expand`)
|
||||||
|
|
|
||||||
|
|
@ -38,42 +38,41 @@
|
||||||
|
|
||||||
(s/def ::router reitit/router?)
|
(s/def ::router reitit/router?)
|
||||||
|
|
||||||
(s/def :reitit.router/path (s/or :empty #{""} :path ::path))
|
(s/def :reitit.router/path ::path)
|
||||||
|
|
||||||
(s/def :reitit.router/routes ::routes)
|
(s/def :reitit.router/routes ::routes)
|
||||||
|
|
||||||
(s/def :reitit.router/meta ::meta)
|
(s/def :reitit.router/meta ::meta)
|
||||||
|
|
||||||
(s/def :reitit.router/expand
|
(s/def :reitit.router/expand fn?
|
||||||
(s/fspec :args (s/cat :arg ::arg, :opts ::opts)
|
#_(s/fspec :args (s/cat :arg ::arg, :opts ::opts)
|
||||||
:ret ::route))
|
:ret ::route))
|
||||||
|
|
||||||
(s/def :reitit.router/coerce
|
(s/def :reitit.router/coerce fn?
|
||||||
(s/fspec :args (s/cat :route (s/spec ::route), :opts ::opts)
|
#_(s/fspec :args (s/cat :route (s/spec ::route), :opts ::opts)
|
||||||
:ret ::route))
|
:ret ::route))
|
||||||
|
|
||||||
(s/def :reitit.router/compile
|
(s/def :reitit.router/compile fn?
|
||||||
(s/fspec :args (s/cat :route (s/spec ::route), :opts ::opts)
|
#_(s/fspec :args (s/cat :route (s/spec ::route), :opts ::opts)
|
||||||
:ret ::result))
|
:ret ::result))
|
||||||
|
|
||||||
(s/def :reitit.router/conflicts
|
(s/def :reitit.router/conflicts fn?
|
||||||
(s/fspec :args (s/cat :conflicts (s/map-of ::route (s/coll-of ::route :into #{})))))
|
#_(s/fspec :args (s/cat :conflicts (s/map-of ::route (s/coll-of ::route :into #{})))))
|
||||||
|
|
||||||
(s/def :reitit.router/router
|
(s/def :reitit.router/router fn?
|
||||||
(s/fspec :args (s/cat :routes ::routes, :opts ::opts)
|
#_(s/fspec :args (s/cat :routes ::routes, :opts ::opts)
|
||||||
:ret ::router))
|
:ret ::router))
|
||||||
|
|
||||||
;; TODO: fspecs fail..
|
|
||||||
(s/def ::opts
|
(s/def ::opts
|
||||||
(s/nilable
|
(s/nilable
|
||||||
(s/keys :opt-un [:reitit.router/path
|
(s/keys :opt-un [:reitit.router/path
|
||||||
:reitit.router/routes
|
:reitit.router/routes
|
||||||
:reitit.router/meta
|
:reitit.router/meta
|
||||||
#_:reitit.router/expand
|
:reitit.router/expand
|
||||||
#_:reitit.router/coerce
|
:reitit.router/coerce
|
||||||
#_:reitit.router/compile
|
:reitit.router/compile
|
||||||
#_:reitit.router/conflicts
|
:reitit.router/conflicts
|
||||||
#_:reitit.router/router])))
|
:reitit.router/router])))
|
||||||
|
|
||||||
(s/fdef reitit/router
|
(s/fdef reitit/router
|
||||||
:args (s/or :1arity (s/cat :data (s/spec ::raw-routes))
|
:args (s/or :1arity (s/cat :data (s/spec ::raw-routes))
|
||||||
|
|
|
||||||
|
|
@ -46,22 +46,29 @@
|
||||||
|
|
||||||
(testing "options"
|
(testing "options"
|
||||||
|
|
||||||
(are [opts]
|
(are [opts]
|
||||||
(is (= true (reitit/router? (reitit/router ["/api"] opts))))
|
(is (= true (reitit/router? (reitit/router ["/api"] opts))))
|
||||||
|
|
||||||
{:path "/"}
|
{:path "/"}
|
||||||
|
{:meta {}}
|
||||||
|
{:expand (fn [_ _] {})}
|
||||||
|
{:coerce (fn [route _] route)}
|
||||||
|
{:compile (fn [_ _])}
|
||||||
|
{:conflicts (fn [_])}
|
||||||
|
{:router reitit/linear-router})
|
||||||
|
|
||||||
{:meta {}}
|
(are [opts]
|
||||||
|
(is (thrown-with-msg?
|
||||||
|
ExceptionInfo
|
||||||
|
#"Call to #'reitit.core/router did not conform to spec"
|
||||||
|
(reitit/router
|
||||||
|
["/api"] opts)))
|
||||||
|
|
||||||
#_{:coerce (fn [_ _] ["/"])}
|
{:path ""}
|
||||||
)
|
{:path nil}
|
||||||
|
{:meta nil}
|
||||||
|
{:expand nil}
|
||||||
(are [opts]
|
{:coerce nil}
|
||||||
(is (thrown-with-msg?
|
{:compile nil}
|
||||||
ExceptionInfo
|
{:conflicts nil}
|
||||||
#"Call to #'reitit.core/router did not conform to spec"
|
{:router nil}))))
|
||||||
(reitit/router
|
|
||||||
["/api"] opts)))
|
|
||||||
|
|
||||||
{:meta 1}))))
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue