Test that different routers work correctly

This commit is contained in:
Tommi Reiman 2017-11-11 16:46:43 +02:00
parent 1f27021c29
commit 8bde6aefa2

View file

@ -7,9 +7,10 @@
(deftest reitit-test
(testing "prefix-tree-router"
(let [router (r/router ["/api" ["/ipa" ["/:size" ::beer]]])]
(is (= :prefix-tree-router (r/router-name router)))
(testing "routers handling wildcard paths"
(are [r name]
(let [router (r/router ["/api" ["/ipa" ["/:size" ::beer]]] {:router r})]
(is (= name (r/router-name router)))
(is (= [["/api/ipa/:size" {:name ::beer} nil]]
(r/routes router)))
(is (= true (map? (r/options router))))
@ -39,45 +40,16 @@
(is (thrown-with-msg?
ExceptionInfo
#"^missing path-params for route /api/ipa/:size -> \#\{:size\}$"
(r/match-by-name! router ::beer))))))
(r/match-by-name! router ::beer)))))
(testing "linear-router"
(let [router (r/router ["/api" ["/ipa" ["/:size" ::beer]]] {:router r/linear-router})]
(is (= :linear-router (r/router-name router)))
(is (= [["/api/ipa/:size" {:name ::beer} nil]]
(r/routes router)))
(is (= true (map? (r/options router))))
(is (= (r/map->Match
{:template "/api/ipa/:size"
:meta {:name ::beer}
:path "/api/ipa/large"
:params {:size "large"}})
(r/match-by-path router "/api/ipa/large")))
(is (= (r/map->Match
{:template "/api/ipa/:size"
:meta {:name ::beer}
:path "/api/ipa/large"
:params {:size "large"}})
(r/match-by-name router ::beer {:size "large"})))
(is (= nil (r/match-by-name router "ILLEGAL")))
(is (= [::beer] (r/route-names router)))
r/linear-router :linear-router
r/prefix-tree-router :prefix-tree-router
r/mixed-router :mixed-router))
(testing "name-based routing with missing parameters"
(is (= (r/map->PartialMatch
{:template "/api/ipa/:size"
:meta {:name ::beer}
:required #{:size}
:params nil})
(r/match-by-name router ::beer)))
(is (= true (r/partial-match? (r/match-by-name router ::beer))))
(is (thrown-with-msg?
ExceptionInfo
#"^missing path-params for route /api/ipa/:size -> \#\{:size\}$"
(r/match-by-name! router ::beer))))))
(testing "lookup-router"
(let [router (r/router ["/api" ["/ipa" ["/large" ::beer]]] {:router r/lookup-router})]
(is (= :lookup-router (r/router-name router)))
(testing "routers handling static paths"
(are [r name]
(let [router (r/router ["/api" ["/ipa" ["/large" ::beer]]] {:router r})]
(is (= name (r/router-name router)))
(is (= [["/api/ipa/large" {:name ::beer} nil]]
(r/routes router)))
(is (= true (map? (r/options router))))
@ -102,45 +74,13 @@
#"can't create :lookup-router with wildcard routes"
(r/lookup-router
(r/resolve-routes
["/api/:version/ping"] {})))))))
["/api/:version/ping"] {}))))))
(testing "single-static-path-router"
(let [router (r/router ["/api" ["/ipa" ["/large" ::beer]]])]
(is (= :single-static-path-router (r/router-name router)))
(is (= [["/api/ipa/large" {:name ::beer} nil]]
(r/routes router)))
(is (= true (map? (r/options router))))
(is (= (r/map->Match
{:template "/api/ipa/large"
:meta {:name ::beer}
:path "/api/ipa/large"
:params {}})
(r/match-by-path router "/api/ipa/large")))
(is (= (r/map->Match
{:template "/api/ipa/large"
:meta {:name ::beer}
:path "/api/ipa/large"
:params {:size "large"}})
(r/match-by-name router ::beer {:size "large"})))
(is (= nil (r/match-by-name router "ILLEGAL")))
(is (= [::beer] (r/route-names router)))
(testing "can't be created with wildcard routes"
(is (thrown-with-msg?
ExceptionInfo
#":single-static-path-router requires exactly 1 static route"
(r/single-static-path-router
(r/resolve-routes
["/api/:version/ping"] {})))))
(testing "can't be created with multiple routes"
(is (thrown-with-msg?
ExceptionInfo
#":single-static-path-router requires exactly 1 static route"
(r/single-static-path-router
(r/resolve-routes
[["/ping"]
["/pong"]] {})))))))
r/lookup-router :lookup-router
r/single-static-path-router :single-static-path-router
r/linear-router :linear-router
r/prefix-tree-router :prefix-tree-router
r/mixed-router :mixed-router))
(testing "route coercion & compilation"