Add more outliner core tests

This commit is contained in:
Tienson Qin
2022-06-16 07:29:07 +08:00
parent d81dcb2de3
commit ec8109f8d0
2 changed files with 52 additions and 12 deletions

View File

@@ -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]}]

View File

@@ -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]