|
@@ -5,12 +5,14 @@
|
|
|
[frontend.react :as r]
|
|
[frontend.react :as r]
|
|
|
[frontend.modules.outliner.utils :as outliner-u]
|
|
[frontend.modules.outliner.utils :as outliner-u]
|
|
|
[frontend.modules.outliner.core :as outliner-core]
|
|
[frontend.modules.outliner.core :as outliner-core]
|
|
|
|
|
+ [frontend.modules.outliner.datascript :as outliner-ds]
|
|
|
[frontend.fixtures :as fixtures]
|
|
[frontend.fixtures :as fixtures]
|
|
|
[cljs-run-test :refer [run-test]]
|
|
[cljs-run-test :refer [run-test]]
|
|
|
[frontend.core-test :as core-test]
|
|
[frontend.core-test :as core-test]
|
|
|
[frontend.handler.block :as block]))
|
|
[frontend.handler.block :as block]))
|
|
|
|
|
|
|
|
(use-fixtures :each
|
|
(use-fixtures :each
|
|
|
|
|
+ fixtures/load-test-env
|
|
|
fixtures/react-impl
|
|
fixtures/react-impl
|
|
|
fixtures/react-components
|
|
fixtures/react-components
|
|
|
fixtures/reset-db)
|
|
fixtures/reset-db)
|
|
@@ -39,22 +41,24 @@
|
|
|
(defn build-db-records
|
|
(defn build-db-records
|
|
|
"build RDS record from memory node struct."
|
|
"build RDS record from memory node struct."
|
|
|
[tree-record]
|
|
[tree-record]
|
|
|
- (letfn [(build [node queue]
|
|
|
|
|
- (let [{:keys [id left parent]} node
|
|
|
|
|
- block (build-block id parent left)
|
|
|
|
|
- left (atom (:id node))
|
|
|
|
|
- children (map (fn [c]
|
|
|
|
|
- (let [node (assoc c :left @left :parent (:id node))]
|
|
|
|
|
- (swap! left (constantly (:id c)))
|
|
|
|
|
- node))
|
|
|
|
|
- (:children node))
|
|
|
|
|
- queue (concat queue children)]
|
|
|
|
|
- (tree/-save block)
|
|
|
|
|
- (when (seq queue)
|
|
|
|
|
- (build (first queue) (rest queue)))))]
|
|
|
|
|
- (let [root (assoc tree-record :left "1" :parent "1")]
|
|
|
|
|
- (tree/-save (build-block "1"))
|
|
|
|
|
- (build root '()))))
|
|
|
|
|
|
|
+ (outliner-ds/auto-transact!
|
|
|
|
|
+ [state (outliner-ds/new-outliner-txs-state)] nil
|
|
|
|
|
+ (letfn [(build [node queue]
|
|
|
|
|
+ (let [{:keys [id left parent]} node
|
|
|
|
|
+ block (build-block id parent left)
|
|
|
|
|
+ left (atom (:id node))
|
|
|
|
|
+ children (map (fn [c]
|
|
|
|
|
+ (let [node (assoc c :left @left :parent (:id node))]
|
|
|
|
|
+ (swap! left (constantly (:id c)))
|
|
|
|
|
+ node))
|
|
|
|
|
+ (:children node))
|
|
|
|
|
+ queue (concat queue children)]
|
|
|
|
|
+ (tree/-save block state)
|
|
|
|
|
+ (when (seq queue)
|
|
|
|
|
+ (build (first queue) (rest queue)))))]
|
|
|
|
|
+ (let [root (assoc tree-record :left "1" :parent "1")]
|
|
|
|
|
+ (tree/-save (build-block "1") state)
|
|
|
|
|
+ (build root '())))))
|
|
|
|
|
|
|
|
|
|
|
|
|
(def tree [1 [[2 [[3 [[4]
|
|
(def tree [1 [[2 [[3 [[4]
|
|
@@ -93,7 +97,9 @@
|
|
|
(build-db-records node-tree)
|
|
(build-db-records node-tree)
|
|
|
(let [new-node (build-block 18 nil nil)
|
|
(let [new-node (build-block 18 nil nil)
|
|
|
parent-node (build-block 2 1 1)]
|
|
parent-node (build-block 2 1 1)]
|
|
|
- (outliner-core/insert-node-as-first-child new-node parent-node)
|
|
|
|
|
|
|
+ (outliner-ds/auto-transact!
|
|
|
|
|
+ [state (outliner-ds/new-outliner-txs-state)] nil
|
|
|
|
|
+ (outliner-core/insert-node-as-first-child state new-node parent-node))
|
|
|
(let [children-of-2 (->> (build-block 2 1 1)
|
|
(let [children-of-2 (->> (build-block 2 1 1)
|
|
|
(tree/-get-children)
|
|
(tree/-get-children)
|
|
|
(mapv #(-> % :data :block/uuid)))]
|
|
(mapv #(-> % :data :block/uuid)))]
|
|
@@ -116,7 +122,9 @@
|
|
|
(build-db-records node-tree)
|
|
(build-db-records node-tree)
|
|
|
(let [new-node (build-block 18 nil nil)
|
|
(let [new-node (build-block 18 nil nil)
|
|
|
left-node (build-block 6 2 3)]
|
|
left-node (build-block 6 2 3)]
|
|
|
- (outliner-core/insert-node-as-sibling new-node left-node)
|
|
|
|
|
|
|
+ (outliner-ds/auto-transact!
|
|
|
|
|
+ [state (outliner-ds/new-outliner-txs-state)] nil
|
|
|
|
|
+ (outliner-core/insert-node-as-sibling state new-node left-node))
|
|
|
(let [children-of-2 (->> (build-block 2 1 1)
|
|
(let [children-of-2 (->> (build-block 2 1 1)
|
|
|
(tree/-get-children)
|
|
(tree/-get-children)
|
|
|
(mapv #(-> % :data :block/uuid)))]
|
|
(mapv #(-> % :data :block/uuid)))]
|
|
@@ -196,176 +204,3 @@
|
|
|
(mapv #(-> % :data :block/uuid)))]
|
|
(mapv #(-> % :data :block/uuid)))]
|
|
|
(is (= [6 9] old-parent's-children))
|
|
(is (= [6 9] old-parent's-children))
|
|
|
(is (= [3 13 14 15] new-parent's-children)))))
|
|
(is (= [3 13 14 15] new-parent's-children)))))
|
|
|
-
|
|
|
|
|
-;
|
|
|
|
|
-;(r/defc render-react-tree
|
|
|
|
|
-; [root]
|
|
|
|
|
-; (let [children (tree/-get-children root)]
|
|
|
|
|
-; (if (seq children)
|
|
|
|
|
-; [(tree/-get-id root)
|
|
|
|
|
-; (mapv (fn [child]
|
|
|
|
|
-; @(->> (render-react-tree child)
|
|
|
|
|
-; (r/with-key (str "root-" (tree/-get-id child)))))
|
|
|
|
|
-; children)]
|
|
|
|
|
-; [(tree/-get-id root)])))
|
|
|
|
|
-;
|
|
|
|
|
-;(deftest test-react-insert-node-as-first-child
|
|
|
|
|
-; "
|
|
|
|
|
-; [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; "
|
|
|
|
|
-; (build-db-records node-tree)
|
|
|
|
|
-; (let [root (build-block 1 nil nil)
|
|
|
|
|
-; result (->> (render-react-tree root)
|
|
|
|
|
-; (r/with-key (str "root-" (tree/-get-id root))))]
|
|
|
|
|
-; (is (= [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result))
|
|
|
|
|
-; (let [new-node (build-block 18 nil nil)
|
|
|
|
|
-; parent-node (build-block 2 1 1)]
|
|
|
|
|
-; (outliner-core/insert-node-as-first-child new-node parent-node)
|
|
|
|
|
-; (is (= [1 [[2 [[18]
|
|
|
|
|
-; [3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result)))))
|
|
|
|
|
-;
|
|
|
|
|
-;(deftest test-react-for-insert-node-as-sibling
|
|
|
|
|
-; "
|
|
|
|
|
-; [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; "
|
|
|
|
|
-; (build-db-records node-tree)
|
|
|
|
|
-; (let [root (build-block 1 nil nil)
|
|
|
|
|
-; result (->> (render-react-tree root)
|
|
|
|
|
-; (r/with-key (str "root-" (tree/-get-id root))))]
|
|
|
|
|
-; (is (= [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result))
|
|
|
|
|
-; (let [new-node (build-block 18 nil nil)
|
|
|
|
|
-; left-node (build-block 3 2 2)]
|
|
|
|
|
-; (outliner-core/insert-node-as-sibling new-node left-node)
|
|
|
|
|
-; (is (= [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [18]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result)))))
|
|
|
|
|
-;
|
|
|
|
|
-;(deftest test-react-for-delete-node
|
|
|
|
|
-; "
|
|
|
|
|
-; [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; "
|
|
|
|
|
-; (build-db-records node-tree)
|
|
|
|
|
-; (let [root (build-block 1 nil nil)
|
|
|
|
|
-; result (->> (render-react-tree root)
|
|
|
|
|
-; (r/with-key (str "root-" (tree/-get-id root))))]
|
|
|
|
|
-; (is (= [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result))
|
|
|
|
|
-; (let [node (build-block 6 2 3)]
|
|
|
|
|
-; (outliner-core/delete-node node)
|
|
|
|
|
-; (is (= [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result)))))
|
|
|
|
|
-;
|
|
|
|
|
-;(deftest test-react-for-move-subtree
|
|
|
|
|
-; "
|
|
|
|
|
-; [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; "
|
|
|
|
|
-; (build-db-records node-tree)
|
|
|
|
|
-; (let [root (build-block 1 nil nil)
|
|
|
|
|
-; result (->> (render-react-tree root)
|
|
|
|
|
-; (r/with-key (str "root-" (tree/-get-id root))))]
|
|
|
|
|
-; (is (= [1 [[2 [[3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result))
|
|
|
|
|
-; (let [node (build-block 3 2 2)
|
|
|
|
|
-; new-parent (build-block 12 1 2)
|
|
|
|
|
-; new-left (build-block 14 12 13)]
|
|
|
|
|
-; (outliner-core/move-subtree node new-parent new-left)
|
|
|
|
|
-; (is (= [1 [[2 [[6 [[7 [[8]]]]]
|
|
|
|
|
-; [9 [[10]
|
|
|
|
|
-; [11]]]]]
|
|
|
|
|
-; [12 [[13]
|
|
|
|
|
-; [14]
|
|
|
|
|
-; [3 [[4]
|
|
|
|
|
-; [5]]]
|
|
|
|
|
-; [15]]]
|
|
|
|
|
-; [16 [[17]]]]]
|
|
|
|
|
-; @result)))))
|
|
|