From 06a5272e1dc9619cf5bf5ccaf690e2d993aedeec Mon Sep 17 00:00:00 2001 From: Asko Nõmm Date: Sun, 3 Oct 2021 17:49:46 -0300 Subject: Make test runnable for CLJS and CLJ --- test/ruuter/core_test.cljc | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 test/ruuter/core_test.cljc (limited to 'test/ruuter/core_test.cljc') diff --git a/test/ruuter/core_test.cljc b/test/ruuter/core_test.cljc new file mode 100644 index 0000000..9f1df23 --- /dev/null +++ b/test/ruuter/core_test.cljc @@ -0,0 +1,64 @@ +(ns ruuter.core-test + #?(:clj (:require [clojure.test :refer :all] + [ruuter.core :as ruuter])) + #?(:cljs (:require [cljs.test :refer-macros [deftest testing is]] + [ruuter.core :as ruuter]))) + + +(deftest path+uri->path-params-test + (let [testfn #'ruuter/path+uri->path-params] + (testing "No params returns an empty map" + (is (= {} + (testfn "/hello/world" "/hello/world")))) + (testing "Having a param returns a map accordingly" + (is (= {:who "world"} + (testfn "/hello/:who" "/hello/world")))) + (testing "Multiple params returns a map accordingly" + (is (= {:who "world" + :why "because"} + (testfn "/hello/:who/:why" "/hello/world/because")))) + (testing "Multiple params, but one is optional" + (is (= {:who "world"} + (testfn "/hello/:who/:why?" "/hello/world"))) + (is (= {:who "world" + :why "because"} + (testfn "/hello/:who/:why?" "/hello/world/because")))))) + + +(deftest match-route-test + (let [testfn #'ruuter/match-route] + (testing "Find a route that exists" + (is (= {:path "/hello" + :method :get + :response {:status 200 + :body "Hello."}} + (testfn [{:path "/hello" + :method :get + :response {:status 200 + :body "Hello."}}] "/hello" :get)))) + (testing "No route found" + (is (= nil + (testfn [] "/hello" :get)))))) + + +(deftest route+req->response-test + (let [testfn #'ruuter/route+req->response] + (testing "Returning a map when the response is a direct map" + (= {:status 200 + :body "Hello."} + (testfn {:path "/hello" + :response {:status 200 + :body "Hello."}} + {:uri "/hello"}))) + (testing "Returning a map via a fn when the response is a fn" + (= {:status 200 + :body "Hello, world."} + (testfn {:path "/hello/:who" + :response (fn [req] + {:status 200 + :body (str "Hello, " (:who (:params req)))})} + {:uri "/hello/world"}))) + (testing "Returning an error map when route is invalid" + (= {:status 404 + :body "Not found."} + (testfn nil {:uri "/hello"}))))) -- cgit v1.2.3