Refactor degroup-shape impl.

In order to fix many corner cases and make
the code more easy to understand.

Related to #72.
This commit is contained in:
Andrey Antukh 2017-03-10 08:48:23 +01:00
parent 1835b496d1
commit 13e02283d8
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
2 changed files with 81 additions and 64 deletions

View file

@ -430,7 +430,7 @@
;; degroup a single group
(t/deftest degroup-shapes-1
(t/deftest degroup-shapes-1-0
(let [initial {:pages {1 {:id 1 :shapes [3]}}
:shapes {1 {:id 1 :page 1 :group 3}
2 {:id 2 :page 1 :group 3}
@ -444,6 +444,23 @@
;; (pprint result)
(t/is (= result expected)))))
;; degroup single shape from group
(t/deftest degroup-shapes-1-1
(let [initial {:pages {1 {:id 1 :shapes [3]}}
:shapes {1 {:id 1 :page 1 :group 3}
2 {:id 2 :page 1 :group 3}
3 {:id 3 :page 1 :type :group :items [1 2]}}}
expected {:workspace {:selected #{1}}
:pages {1 {:id 1 :shapes [1 3]}}
:shapes {1 {:id 1 :page 1}
2 {:id 2 :page 1 :group 3}
3 {:id 3 :page 1 :type :group :items [2]}}}]
(let [result (impl/degroup-shapes initial [1] 1)]
;; (pprint expected)
;; (pprint result)
(t/is (= result expected)))))
;; degroup group inside a group
(t/deftest degroup-shapes-2
@ -477,35 +494,3 @@
;; (pprint expected)
;; (pprint result)
(t/is (= result expected)))))
;; degroup multiple groups nested (child first)
(t/deftest degroup-shapes-4
(let [initial {:pages {1 {:id 1 :shapes [1]}}
:shapes {1 {:id 1 :page 1 :type :group :items [2]}
2 {:id 2 :page 1 :type :group :items [3] :group 1}
3 {:id 3 :page 1 :group 2}}}
expected {:pages {1 {:id 1, :shapes [3]}},
:shapes {3 {:id 3, :page 1}},
:workspace {:selected #{3}}}]
(let [result (impl/degroup-shapes initial [2 1] 1)]
;; (pprint expected)
;; (pprint result)
(t/is (= result expected)))))
;; degroup multiple groups nested (parent first)
(t/deftest degroup-shapes-5
(let [initial {:pages {1 {:id 1 :shapes [1]}}
:shapes {1 {:id 1 :page 1 :type :group :items [2]}
2 {:id 2 :page 1 :type :group :items [3] :group 1}
3 {:id 3 :page 1 :group 2}}}
expected {:pages {1 {:id 1, :shapes [3]}},
:shapes {3 {:id 3, :page 1}},
:workspace {:selected #{3}}}]
(let [result (impl/degroup-shapes initial [1 2] 1)]
;; (pprint expected)
;; (pprint result)
(t/is (= result expected)))))