Browse Source

fix: rename page tests

Tienson Qin 1 year ago
parent
commit
fe2a426761

+ 27 - 27
src/main/frontend/worker/handler/page/rename.cljs

@@ -99,7 +99,6 @@
                             tx-data)
 
                            (remove nil?))))]
-
         (ldb/transact! conn txs {:outliner-op :rename-page
                                  :data (cond->
                                         {:page-id (:db/id page)
@@ -118,29 +117,30 @@
 (defn rename!
   [repo conn config page-uuid new-name & {:keys [persist-op?]
                                           :or {persist-op? true}}]
-  (let [db @conn
-        page-e        (d/entity db [:block/uuid page-uuid])
-        old-name      (:block/original-name page-e)
-        new-name      (string/trim new-name)
-        old-page-name (common-util/page-name-sanity-lc old-name)
-        new-page-name (common-util/page-name-sanity-lc new-name)
-        new-page-exists? (some? (ldb/get-page db new-name))
-        name-changed? (not= old-name new-name)]
-    (cond
-      (string/blank? new-name)
-      :invalid-empty-name
-
-      new-page-exists?
-      :rename-page-exists
-
-      (ldb/built-in? page-e)
-      :built-in-page
-
-      (and old-name new-name name-changed?)
-      (if (= old-page-name new-page-name) ; case changed
-        (ldb/transact! conn
-                       [{:db/id (:db/id page-e)
-                         :block/original-name new-name}]
-                       {:persist-op? persist-op?
-                        :outliner-op :rename-page})
-        (rename-page! repo conn config page-e new-name)))))
+  (let [db @conn]
+    (when-let [page-e (d/entity db [:block/uuid page-uuid])]
+      (let [old-name      (:block/original-name page-e)
+            new-name      (string/trim new-name)
+            old-page-name (common-util/page-name-sanity-lc old-name)
+            new-page-name (common-util/page-name-sanity-lc new-name)
+            new-page-exists? (when-let [p (ldb/get-page db new-name)]
+                               (not= (:db/id p) (:db/id page-e)))
+            name-changed? (not= old-name new-name)]
+        (cond
+          (string/blank? new-name)
+          :invalid-empty-name
+
+          new-page-exists?
+          :rename-page-exists
+
+          (ldb/built-in? page-e)
+          :built-in-page
+
+          (and old-name new-name name-changed?)
+          (if (= old-page-name new-page-name) ; case changed
+            (ldb/transact! conn
+                           [{:db/id (:db/id page-e)
+                             :block/original-name new-name}]
+                           {:persist-op? persist-op?
+                            :outliner-op :rename-page})
+            (rename-page! repo conn config page-e new-name)))))))

+ 6 - 12
src/test/frontend/worker/handler/page/rename_test.cljs

@@ -21,24 +21,18 @@
 
 (use-fixtures :each start-and-destroy-db)
 
-(defn- page-rename [old-name new-name]
-  (worker-page-rename/rename! repo (db/get-db repo false) {} old-name new-name))
+(defn- page-rename [page-uuid new-name]
+  (worker-page-rename/rename! repo (db/get-db repo false) {} page-uuid new-name))
 
 (deftest rename-test
   (testing "Case change"
     (let [page (db/get-page "test")]
-      (page-rename "test" "Test")
-      (let [entity (db/get-page "test")]
-        (is (= "Test" (:block/original-name entity)))
-        ;; db id not changed
-        (is (= (:db/id page) (:db/id entity))))))
+      (page-rename (:block/uuid page) "Test")
+      (is (= "Test" (:block/original-name (db/entity (:db/id page)))))))
 
   (testing "Name changed"
-    (let [page (db/get-page "test")]
-      (page-rename "Test" "New name")
-      (let [entity (db/get-page "new name")]
-        (is (= "New name" (:block/original-name entity)))
-        (is (= (:db/id page) (:db/id entity))))))
+    (let [page (db/get-page "Test")]
+      (is (= "New name" (:block/original-name (db/entity (:db/id page)))))))
 
   ;; (testing "Merge existing page"
   ;;   (page-handler/create! "Existing page" {:redirect? false :create-first-block? true})