1
0
Эх сурвалжийг харах

Add routing test and make ns name consistent

Gabriel Horner 2 жил өмнө
parent
commit
6e0dea3f2c

+ 1 - 0
.clj-kondo/config.edn

@@ -65,6 +65,7 @@
              frontend.handler.plugin-config plugin-config-handler
              frontend.handler.repo repo-handler
              frontend.handler.repo-config repo-config-handler
+             frontend.handler.route route-handler
              frontend.handler.search search-handler
              frontend.idb idb
              frontend.loader loader

+ 3 - 3
src/main/frontend/components/onboarding/quick_tour.cljs

@@ -5,7 +5,7 @@
             [frontend.context.i18n :refer [t]]
             [frontend.date :as date]
             [frontend.util :as util]
-            [frontend.handler.route :as router-handler]
+            [frontend.handler.route :as route-handler]
             [frontend.handler.command-palette :as command-palette]
             [hiccups.runtime :as h]
             [dommy.core :as d]))
@@ -68,7 +68,7 @@
     :beforeShowPromise #(if-not (= (util/safe-lower-case (state/get-current-page))
                                    (util/safe-lower-case (date/today)))
                           (wait-target (fn []
-                                         (router-handler/redirect-to-page! (date/today))
+                                         (route-handler/redirect-to-page! (date/today))
                                          (util/scroll-to-top)) 200)
                           (p/resolved true))
     :buttons           [{:text "Back" :classes "back" :action (.-back jsTour)}
@@ -175,7 +175,7 @@
     :text              (h/render-html [:section [:h2 (t :on-boarding/tour-whiteboard-new "🆕️")]
                                        [:p (t :on-boarding/tour-whiteboard-new-description)]])
     :beforeShowPromise (fn []
-                         (router-handler/redirect-to-whiteboard-dashboard!)
+                         (route-handler/redirect-to-whiteboard-dashboard!)
                          (wait-target ".dashboard-create-card" 500))
     :attachTo          {:element ".dashboard-create-card" :on "bottom"}
     :buttons           [{:text "Back" :classes "back" :action (.-back jsTour)}

+ 13 - 13
src/main/frontend/components/search.cljs

@@ -4,7 +4,7 @@
             [frontend.util :as util]
             [frontend.components.block :as block]
             [frontend.components.svg :as svg]
-            [frontend.handler.route :as route]
+            [frontend.handler.route :as route-handler]
             [frontend.handler.editor :as editor-handler]
             [frontend.handler.page :as page-handler]
             [frontend.handler.block :as block-handler]
@@ -161,13 +161,13 @@
     (let [data (or alias data)]
       (cond
         (model/whiteboard-page? data)
-        (route/redirect-to-whiteboard! data)
+        (route-handler/redirect-to-whiteboard! data)
         :else
-        (route/redirect-to-page! data)))
+        (route-handler/redirect-to-page! data)))
 
     :file
-    (route/redirect! {:to :file
-                      :path-params {:path data}})
+    (route-handler/redirect! {:to :file
+                              :path-params {:path data}})
 
     :block
     (let [block-uuid (uuid (:block/uuid data))
@@ -178,13 +178,13 @@
       (if page
         (cond
           (model/whiteboard-page? page-name)
-          (route/redirect-to-whiteboard! page-name {:block-id block-uuid})
+          (route-handler/redirect-to-whiteboard! page-name {:block-id block-uuid})
 
           (or collapsed? long-page?)
-          (route/redirect-to-page! block-uuid)
+          (route-handler/redirect-to-page! block-uuid)
 
           :else
-          (route/redirect-to-page! (:block/name page) {:anchor (str "ls-block-" (:block/uuid data))}))
+          (route-handler/redirect-to-page! (:block/name page) {:anchor (str "ls-block-" (:block/uuid data))}))
         ;; search indice outdated
         (println "[Error] Block page missing: "
                  {:block-id block-uuid
@@ -197,9 +197,9 @@
       (if page
         (cond
           (model/whiteboard-page? page-name)
-          (route/redirect-to-whiteboard! page-name)
+          (route-handler/redirect-to-whiteboard! page-name)
           :else
-          (route/redirect-to-page! page-name))
+          (route-handler/redirect-to-page! page-name))
         ;; search indice outdated
         (println "[Error] page missing: "
                  {:page-uuid page-uuid
@@ -219,7 +219,7 @@
          repo
          (:db/id page)
          :page)))
-    
+
     :page-content
     (let [page-uuid (uuid (:block/uuid data))
           page (model/get-block-by-uuid page-uuid)]
@@ -245,7 +245,7 @@
     (page-handler/create! search-q)
 
     :file
-    (route/redirect! {:to :file
+    (route-handler/redirect! {:to :file
                       :path-params {:path data}})
 
     nil)
@@ -425,7 +425,7 @@
       {:on-chosen (fn [{:keys [type data]}]
                     (case type
                       :page
-                      (do (route/redirect-to-page! data)
+                      (do (route-handler/redirect-to-page! data)
                           (state/close-modal!))
                       :search
                       (let [q data]

+ 2 - 2
src/main/frontend/core.cljs

@@ -3,7 +3,7 @@
   (:require [rum.core :as rum]
             [frontend.handler :as handler]
             [frontend.handler.plugin :as plugin-handler]
-            [frontend.handler.route :as route]
+            [frontend.handler.route :as route-handler]
             [frontend.page :as page]
             [frontend.routes :as routes]
             [frontend.spec]
@@ -20,7 +20,7 @@
   (rfe/start!
    (rf/router routes/routes nil)
    (fn [route]
-     (route/set-route-match! route)
+     (route-handler/set-route-match! route)
      (plugin-handler/hook-plugin-app
       :route-changed (select-keys route [:template :path :parameters])))
 

+ 4 - 2
src/main/frontend/handler/route.cljs

@@ -1,4 +1,5 @@
-(ns ^:no-doc frontend.handler.route
+(ns frontend.handler.route
+  "Provides fns used for routing throughout the app"
   (:require [clojure.string :as string]
             [frontend.config :as config]
             [frontend.date :as date]
@@ -62,7 +63,8 @@
      :path-params {:name (str page-name)}}))
 
 (defn redirect-to-page!
-  "Must ensure `page-name` is dereferenced (not an alias), or it will create a wrong new page with that name (#3511)."
+  "Must ensure `page-name` is dereferenced (not an alias), or it will create a
+  wrong new page with that name (#3511). page-name can be a block name or uuid"
   ([page-name]
    (redirect-to-page! page-name {}))
   ([page-name {:keys [anchor push click-from-recent?]

+ 2 - 2
src/main/frontend/publishing.cljs

@@ -5,7 +5,7 @@
             [frontend.db :as db]
             [logseq.db.schema :as db-schema]
             [rum.core :as rum]
-            [frontend.handler.route :as route]
+            [frontend.handler.route :as route-handler]
             [frontend.page :as page]
             [frontend.util :as util]
             [frontend.routes :as routes]
@@ -56,7 +56,7 @@
   []
   (rfe/start!
    (rf/router routes/routes {})
-   route/set-route-match!
+   route-handler/set-route-match!
    ;; set to false to enable HistoryAPI
    {:use-fragment true}))
 

+ 36 - 0
src/test/frontend/handler/route_test.cljs

@@ -0,0 +1,36 @@
+(ns frontend.handler.route-test
+  (:require [frontend.handler.route :as route-handler]
+            [frontend.test.helper :as test-helper :refer [load-test-files]]
+            [frontend.db.utils :as db-utils]
+            [clojure.test :refer [deftest is use-fixtures]]))
+
+(use-fixtures :each {:before test-helper/start-test-db!
+                     :after test-helper/destroy-test-db!})
+
+(deftest default-page-route
+  (load-test-files [{:file/path "foo.md"
+                     :file/content "foo:: bar
+- b1
+logseq.block/route-name:: b1
+- b2"}])
+
+  (let [block (ffirst
+               (db-utils/q '[:find (pull ?b [:block/uuid])
+                             :where [?b :block/content "b1\nlogseq.block/route-name:: b1"]]))]
+    (is (= {:to :page-block
+            :path-params {:name "foo" :block-route-name "b1"}}
+           (#'route-handler/default-page-route (:block/uuid block)))
+        "Generates a page-block link if route-name is found"))
+
+  (let [uuid (->
+              (db-utils/q '[:find (pull ?b [:block/uuid])
+                            :where [?b :block/content "b2"]])
+              ffirst
+              :block/uuid)]
+    (is (= {:to :page :path-params {:name (str uuid)}}
+          (#'route-handler/default-page-route uuid))
+       "Generates a page link if route-name is not found"))
+
+  (is (= {:to :page :path-params {:name "page-name"}}
+         (#'route-handler/default-page-route "page-name"))
+      "Generates a page link if name is not a uuid"))