mirror of
https://github.com/logseq/logseq.git
synced 2026-05-27 22:24:09 +00:00
Add more outliner core tests
This commit is contained in:
@@ -370,20 +370,29 @@
|
||||
|
||||
;;; ### insert-blocks, delete-blocks, move-blocks
|
||||
|
||||
(defn- fix-top-level-blocks
|
||||
(defn fix-top-level-blocks
|
||||
"Blocks with :block/level"
|
||||
[blocks]
|
||||
(loop [blocks blocks
|
||||
last-top-level-block nil
|
||||
result []]
|
||||
(if-let [block (first blocks)]
|
||||
(if (= 1 (:block/level block))
|
||||
(let [block' (assoc block
|
||||
:block/left {:db/id (:db/id last-top-level-block)}
|
||||
:block/parent (:block/parent last-top-level-block))]
|
||||
(recur (rest blocks) block (conj result block')))
|
||||
(recur (rest blocks) last-top-level-block (conj result block)))
|
||||
result)))
|
||||
(let [top-level-blocks (filter #(= (:block/level %) 1) blocks)
|
||||
id->block (zipmap (map :db/id top-level-blocks) top-level-blocks)
|
||||
uuid->block (zipmap (map :block/uuid top-level-blocks) top-level-blocks)]
|
||||
(if (every? (fn [block]
|
||||
(let [left (:block/left block)
|
||||
id (if (map? left) (:db/id left) (second left))]
|
||||
(some? (or (get id->block id) (get uuid->block id))))) (rest top-level-blocks))
|
||||
;; no need to fix
|
||||
blocks
|
||||
(loop [blocks blocks
|
||||
last-top-level-block nil
|
||||
result []]
|
||||
(if-let [block (first blocks)]
|
||||
(if (= 1 (:block/level block))
|
||||
(let [block' (assoc block
|
||||
:block/left {:db/id (:db/id last-top-level-block)}
|
||||
:block/parent (:block/parent last-top-level-block))]
|
||||
(recur (rest blocks) block (conj result block')))
|
||||
(recur (rest blocks) last-top-level-block (conj result block)))
|
||||
result)))))
|
||||
|
||||
(defn- insert-blocks-aux
|
||||
[blocks target-block {:keys [sibling? replace-empty-target? keep-uuid? move? outliner-op]}]
|
||||
|
||||
@@ -215,6 +215,37 @@
|
||||
(outliner-core/indent-outdent-blocks! [(get-block 13) (get-block 14)] false))
|
||||
(is (= [2 12 13 14 16] (get-children 22)))))
|
||||
|
||||
(deftest test-fix-top-level-blocks
|
||||
(testing "no need to fix"
|
||||
(let [blocks [{:block/uuid #uuid "62aa668b-e258-445d-aef6-5510054ff495",
|
||||
:block/properties {},
|
||||
:block/left #:db{:id 144},
|
||||
:block/format :markdown,
|
||||
:block/level 1,
|
||||
:block/content "a",
|
||||
:db/id 145,
|
||||
:block/parent #:db{:id 144},
|
||||
:block/page #:db{:id 144}}
|
||||
{:block/uuid #uuid "62aa668d-65d1-440c-849b-a0717f691193",
|
||||
:block/properties {},
|
||||
:block/left #:db{:id 145},
|
||||
:block/format :markdown,
|
||||
:block/level 1,
|
||||
:block/content "b",
|
||||
:db/id 146,
|
||||
:block/parent #:db{:id 144},
|
||||
:block/page #:db{:id 144}}
|
||||
{:block/uuid #uuid "62aa668e-f866-48ee-b8fe-737e101c548d",
|
||||
:block/properties {},
|
||||
:block/left #:db{:id 146},
|
||||
:block/format :markdown,
|
||||
:block/level 1,
|
||||
:block/content "c",
|
||||
:db/id 147,
|
||||
:block/parent #:db{:id 144},
|
||||
:block/page #:db{:id 144}}]]
|
||||
(= blocks (outliner-core/fix-top-level-blocks blocks)))))
|
||||
|
||||
(deftest test-outdent-blocks
|
||||
(testing "
|
||||
[1 [[2 [[3]
|
||||
|
||||
Reference in New Issue
Block a user