Tienson Qin 2 gadi atpakaļ
vecāks
revīzija
d6e5e2b0b4

+ 6 - 6
src/main/frontend/handler/db_based/page.cljs

@@ -61,7 +61,7 @@
         tx-data))))
         tx-data))))
 
 
 (defn- based-merge-pages!
 (defn- based-merge-pages!
-  [from-page-name to-page-name persist-op?]
+  [from-page-name to-page-name persist-op? redirect?]
   (when (and (db/page-exists? from-page-name)
   (when (and (db/page-exists? from-page-name)
              (db/page-exists? to-page-name)
              (db/page-exists? to-page-name)
              (not= from-page-name to-page-name))
              (not= from-page-name to-page-name))
@@ -97,12 +97,12 @@
                                                     (util/get-page-original-name from-page)
                                                     (util/get-page-original-name from-page)
                                                     (util/get-page-original-name to-page)))
                                                     (util/get-page-original-name to-page)))
 
 
-
     (page-common-handler/delete! from-page-name nil :redirect-to-home? false :persist-op? persist-op?)
     (page-common-handler/delete! from-page-name nil :redirect-to-home? false :persist-op? persist-op?)
 
 
-    (route-handler/redirect! {:to          :page
-                              :push        false
-                              :path-params {:name to-page-name}})))
+    (when redirect?
+      (route-handler/redirect! {:to          :page
+                                :push        false
+                                :path-params {:name to-page-name}}))))
 
 
 (defn rename!
 (defn rename!
   ([old-name new-name]
   ([old-name new-name]
@@ -140,7 +140,7 @@
 
 
           (and (not= old-page-name new-page-name)
           (and (not= old-page-name new-page-name)
                (db/entity [:block/name new-page-name])) ; merge page
                (db/entity [:block/name new-page-name])) ; merge page
-          (based-merge-pages! old-page-name new-page-name persist-op?)
+          (based-merge-pages! old-page-name new-page-name persist-op? redirect?)
 
 
           :else                          ; rename
           :else                          ; rename
           (page-common-handler/create! new-name
           (page-common-handler/create! new-name

+ 28 - 23
src/test/frontend/handler/db_based/page_test.cljs

@@ -6,7 +6,8 @@
             [frontend.handler.page :as page-handler]
             [frontend.handler.page :as page-handler]
             [frontend.db :as db]
             [frontend.db :as db]
             [frontend.db.fix :as db-fix]
             [frontend.db.fix :as db-fix]
-            [frontend.handler.editor :as editor-handler]))
+            [frontend.handler.editor :as editor-handler]
+            [goog.dom :as gdom]))
 
 
 ;; FIXME: merge properties from both pages
 ;; FIXME: merge properties from both pages
 
 
@@ -27,7 +28,7 @@
 (deftest rename-test
 (deftest rename-test
   (testing "Case change"
   (testing "Case change"
     (let [page (db/entity [:block/name "test"])]
     (let [page (db/entity [:block/name "test"])]
-      (db-page-handler/rename! "test" "Test")
+      (db-page-handler/rename! "test" "Test" false false)
       (let [entity (db/entity [:block/name "test"])]
       (let [entity (db/entity [:block/name "test"])]
         (is (= "Test" (:block/original-name entity)))
         (is (= "Test" (:block/original-name entity)))
         ;; db id not changed
         ;; db id not changed
@@ -35,26 +36,28 @@
 
 
   (testing "Name changed"
   (testing "Name changed"
     (let [page (db/entity [:block/name "test"])]
     (let [page (db/entity [:block/name "test"])]
-      (db-page-handler/rename! "Test" "New name")
+      (db-page-handler/rename! "Test" "New name" false false)
       (let [entity (db/entity [:block/name "new name"])]
       (let [entity (db/entity [:block/name "new name"])]
         (is (= "New name" (:block/original-name entity)))
         (is (= "New name" (:block/original-name entity)))
         (is (= (:db/id page) (:db/id entity))))))
         (is (= (:db/id page) (:db/id entity))))))
 
 
   (testing "Merge existing page"
   (testing "Merge existing page"
-    (page-handler/create! "Existing page" {:redirect? false :create-first-block? true})
-    (db-page-handler/rename! "New name" "Existing page")
-    (let [e1 (db/entity [:block/name "new name"])
-          e2 (db/entity [:block/name "existing page"])]
+    (with-redefs [gdom/getElement (constantly #js {:id nil})
+                  editor-handler/edit-block! (constantly nil)]
+      (page-handler/create! "Existing page" {:redirect? false :create-first-block? true})
+      (db-page-handler/rename! "New name" "Existing page" false false)
+      (let [e1 (db/entity [:block/name "new name"])
+            e2 (db/entity [:block/name "existing page"])]
       ;; Old page deleted
       ;; Old page deleted
-      (is (nil? e1))
+        (is (nil? e1))
       ;; Blocks from both pages have been merged
       ;; Blocks from both pages have been merged
-      (is (= (count (:block/_page e2)) (+ 1 (dec (count init-data)))))
+        (is (= (count (:block/_page e2)) (+ 1 (dec (count init-data)))))
       ;; Ensure there's no conflicts
       ;; Ensure there's no conflicts
-      (is (empty? (db-fix/get-conflicts (db/get-db) (:db/id e2)))))))
+        (is (empty? (db-fix/get-conflicts (db/get-db) (:db/id e2))))))))
 
 
 (deftest merge-with-empty-page
 (deftest merge-with-empty-page
   (page-handler/create! "Existing page" {:redirect? false :create-first-block? false})
   (page-handler/create! "Existing page" {:redirect? false :create-first-block? false})
-  (db-page-handler/rename! "Test" "Existing page")
+  (db-page-handler/rename! "Test" "Existing page" false false)
   (let [e1 (db/entity [:block/name "test"])
   (let [e1 (db/entity [:block/name "test"])
         e2 (db/entity [:block/name "existing page"])]
         e2 (db/entity [:block/name "existing page"])]
       ;; Old page deleted
       ;; Old page deleted
@@ -68,29 +71,31 @@
   (testing "Renaming a page to an existing whiteboard page"
   (testing "Renaming a page to an existing whiteboard page"
     (page-handler/create! "Whiteboard page" {:redirect? false
     (page-handler/create! "Whiteboard page" {:redirect? false
                                              :whiteboard? true})
                                              :whiteboard? true})
-    (is (= :merge-whiteboard-pages (db-page-handler/rename! "Test" "Whiteboard page")))
-    (is (= :merge-whiteboard-pages (db-page-handler/rename! "Whiteboard page" "Test")))))
+    (is (= :merge-whiteboard-pages (db-page-handler/rename! "Test" "Whiteboard page" false false)))
+    (is (= :merge-whiteboard-pages (db-page-handler/rename! "Whiteboard page" "Test" false false)))))
 
 
 (deftest merge-existing-pages-should-update-ref-ids
 (deftest merge-existing-pages-should-update-ref-ids
   (testing "Merge existing page"
   (testing "Merge existing page"
-    (editor-handler/save-block! repo fbid "Block 1 [[Test]]")
-    (page-handler/create! "Existing page" {:redirect? false :create-first-block? true})
-    (db-page-handler/rename! "Test" "Existing page")
-    (let [e1 (db/entity [:block/name "test"])
-          e2 (db/entity [:block/name "existing page"])]
+    (with-redefs [gdom/getElement (constantly #js {:id nil})
+                  editor-handler/edit-block! (constantly nil)]
+      (editor-handler/save-block! repo fbid "Block 1 [[Test]]")
+      (page-handler/create! "Existing page" {:redirect? false :create-first-block? true})
+      (db-page-handler/rename! "Test" "Existing page" false false)
+      (let [e1 (db/entity [:block/name "test"])
+            e2 (db/entity [:block/name "existing page"])]
       ;; Old page deleted
       ;; Old page deleted
-      (is (nil? e1))
+        (is (nil? e1))
       ;; Blocks from both pages have been merged
       ;; Blocks from both pages have been merged
-      (is (= (count (:block/_page e2)) (+ 1 (dec (count init-data)))))
+        (is (= (count (:block/_page e2)) (+ 1 (dec (count init-data)))))
       ;; Ensure there's no conflicts
       ;; Ensure there's no conflicts
-      (is (empty? (db-fix/get-conflicts (db/get-db) (:db/id e2))))
+        (is (empty? (db-fix/get-conflicts (db/get-db) (:db/id e2))))
       ;; Content updated
       ;; Content updated
-      (is (= "Block 1 [[Existing page]]" (:block/content (db/entity [:block/uuid fbid])))))))
+        (is (= "Block 1 [[Existing page]]" (:block/content (db/entity [:block/uuid fbid]))))))))
 
 
 ;; TODO: full coverage
 ;; TODO: full coverage
 (deftest rename-namespace-pages
 (deftest rename-namespace-pages
   (testing "Rename a page to a namespaced one"
   (testing "Rename a page to a namespaced one"
-    (db-page-handler/rename! "Test" "Abc/Def Ghi/Jk")
+    (db-page-handler/rename! "Test" "Abc/Def Ghi/Jk" false false)
     (let [e1 (db/entity [:block/name "test"])
     (let [e1 (db/entity [:block/name "test"])
           e2 (db/entity [:block/name "abc/def ghi/jk"])
           e2 (db/entity [:block/name "abc/def ghi/jk"])
           e3 (db/entity [:block/name "abc/def ghi"])
           e3 (db/entity [:block/name "abc/def ghi"])