mirror of
https://github.com/penpot/penpot.git
synced 2025-08-04 03:58:29 +02:00
🔧 add groups handling v2
This commit is contained in:
parent
e2ff6f7ba6
commit
3a4ec32f8e
3 changed files with 766 additions and 219 deletions
|
@ -130,10 +130,10 @@
|
|||
|
||||
(t/deftest add-token-set-with-group
|
||||
(let [tokens-lib (ctob/make-tokens-lib)
|
||||
token-set (ctob/make-token-set :name "test-group.test-token-set")
|
||||
token-set (ctob/make-token-set :name "test-group/test-token-set")
|
||||
tokens-lib' (ctob/add-set tokens-lib token-set)
|
||||
|
||||
set-group (ctob/get-set-group tokens-lib' "test-group")]
|
||||
set-group (ctob/get-set-group tokens-lib' "test-group")]
|
||||
|
||||
(t/is (= (:attr1 set-group) "one"))
|
||||
(t/is (= (:attr2 set-group) "two"))))
|
||||
|
@ -423,8 +423,8 @@
|
|||
(t/testing "grouping"
|
||||
(t/deftest split-and-join
|
||||
(let [name "group.subgroup.name"
|
||||
path (ctob/split-path name)
|
||||
name' (ctob/join-path path)]
|
||||
path (ctob/split-path name ".")
|
||||
name' (ctob/join-path path ".")]
|
||||
(t/is (= (first path) "group"))
|
||||
(t/is (= (second path) "subgroup"))
|
||||
(t/is (= (nth path 2) "name"))
|
||||
|
@ -432,7 +432,7 @@
|
|||
|
||||
(t/deftest remove-spaces
|
||||
(let [name "group . subgroup . name"
|
||||
path (ctob/split-path name)]
|
||||
path (ctob/split-path name ".")]
|
||||
(t/is (= (first path) "group"))
|
||||
(t/is (= (second path) "subgroup"))
|
||||
(t/is (= (nth path 2) "name"))))
|
||||
|
@ -441,82 +441,555 @@
|
|||
(let [token1 (ctob/make-token :name "token1" :type :boolean :value true)
|
||||
token2 (ctob/make-token :name "some group.token2" :type :boolean :value true)
|
||||
|
||||
token1' (ctob/group-item token1 "big group")
|
||||
token2' (ctob/group-item token2 "big group")
|
||||
token1'' (ctob/ungroup-item token1')
|
||||
token2'' (ctob/ungroup-item token2')]
|
||||
token1' (ctob/group-item token1 "big group" ".")
|
||||
token2' (ctob/group-item token2 "big group" ".")
|
||||
token1'' (ctob/ungroup-item token1' ".")
|
||||
token2'' (ctob/ungroup-item token2' ".")]
|
||||
(t/is (= (:name token1') "big group.token1"))
|
||||
(t/is (= (:name token2') "big group.some group.token2"))
|
||||
(t/is (= (:name token1'') "token1"))
|
||||
(t/is (= (:name token2'') "some group.token2"))))
|
||||
|
||||
(t/deftest get-path
|
||||
(t/deftest get-groups-str
|
||||
(let [token1 (ctob/make-token :name "token1" :type :boolean :value true)
|
||||
token2 (ctob/make-token :name "some-group.token2" :type :boolean :value true)
|
||||
token3 (ctob/make-token :name "some-group.some-subgroup.token3" :type :boolean :value true)]
|
||||
(t/is (= (ctob/get-path token1) ""))
|
||||
(t/is (= (ctob/get-path token2) "some-group"))
|
||||
(t/is (= (ctob/get-path token3) "some-group.some-subgroup"))))
|
||||
(t/is (= (ctob/get-groups-str token1 ".") ""))
|
||||
(t/is (= (ctob/get-groups-str token2 ".") "some-group"))
|
||||
(t/is (= (ctob/get-groups-str token3 ".") "some-group.some-subgroup"))))
|
||||
|
||||
(t/deftest get-final-name
|
||||
(let [token1 (ctob/make-token :name "token1" :type :boolean :value true)
|
||||
token2 (ctob/make-token :name "some-group.token2" :type :boolean :value true)
|
||||
token3 (ctob/make-token :name "some-group.some-subgroup.token3" :type :boolean :value true)]
|
||||
(t/is (= (ctob/get-final-name token1) "token1"))
|
||||
(t/is (= (ctob/get-final-name token2) "token2"))
|
||||
(t/is (= (ctob/get-final-name token3) "token3"))))
|
||||
|
||||
(t/deftest group-items
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "token-set1"))
|
||||
(ctob/add-set (ctob/make-token-set :name "sgroup1.token-set2"))
|
||||
(ctob/add-set (ctob/make-token-set :name "sgroup1.token-set3"))
|
||||
(ctob/add-set (ctob/make-token-set :name "sgroup1.ssubgroup1.token-set4"))
|
||||
(ctob/add-set (ctob/make-token-set :name "sgroup2.token-set5"))
|
||||
(ctob/add-token-in-set "sgroup2.token-set5"
|
||||
(ctob/make-token :name "tgroup1.tsubgroup1.token1"
|
||||
(t/is (= (ctob/get-final-name token1 ".") "token1"))
|
||||
(t/is (= (ctob/get-final-name token2 ".") "token2"))
|
||||
(t/is (= (ctob/get-final-name token3 ".") "token3"))))
|
||||
|
||||
(t/testing "grouped tokens"
|
||||
(t/deftest grouped-tokens
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "token1"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "sgroup2.token-set5"
|
||||
(ctob/make-token :name "tgroup1.tsubgroup1.token2"
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.token2"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.token3"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.subgroup11.token4"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group2.token5"
|
||||
:type :boolean
|
||||
:value true)))
|
||||
sets (ctob/get-sets tokens-lib)
|
||||
set (ctob/get-set tokens-lib "sgroup2.token-set5")
|
||||
tokens (ctob/get-tokens set)
|
||||
|
||||
set-groups (ctob/group-items sets)
|
||||
set (ctob/get-set tokens-lib "test-token-set")
|
||||
tokens-list (ctob/get-tokens set)
|
||||
|
||||
token-set1 (get set-groups "token-set1")
|
||||
sgroup1 (get set-groups "sgroup1")
|
||||
token-set2 (get sgroup1 "token-set2")
|
||||
token-set3 (get sgroup1 "token-set3")
|
||||
ssubgroup1 (get sgroup1 "ssubgroup1")
|
||||
token-set4 (get ssubgroup1 "token-set4")
|
||||
sgroup2 (get set-groups "sgroup2")
|
||||
token-set5 (get sgroup2 "token-set5")
|
||||
tokens-tree (:tokens set)
|
||||
|
||||
[node-token1 node-group1 node-group2]
|
||||
(ctob/get-children tokens-tree)
|
||||
|
||||
token-groups (ctob/group-items tokens)
|
||||
tgroup1 (get token-groups "tgroup1")
|
||||
tsubgroup1 (get tgroup1 "tsubgroup1")
|
||||
token1 (get tsubgroup1 "token1")
|
||||
token2 (get tsubgroup1 "token2")]
|
||||
[node-token2 node-token3 node-subgroup11]
|
||||
(ctob/get-children (second node-group1))
|
||||
|
||||
;; {"sgroup1"
|
||||
;; {"token-set2" {:name "sgroup1.token-set2" ...}
|
||||
;; "token-set3" {:name "sgroup1.token-set3" ...}
|
||||
;; "ssubgroup1"
|
||||
;; {"token-set4" {:name "sgroup1.ssubgroup1.token-set4" ...}}}
|
||||
;; "sgroup2"
|
||||
;; {"token-set5" {:name "sgroup2.token-set5" ...}}
|
||||
;; "token-set1" {:name "token-set1" ...}}
|
||||
[node-token4]
|
||||
(ctob/get-children (second node-subgroup11))
|
||||
|
||||
(t/is (= (:name token-set1) "token-set1"))
|
||||
(t/is (= (:name token-set2) "sgroup1.token-set2"))
|
||||
(t/is (= (:name token-set3) "sgroup1.token-set3"))
|
||||
(t/is (= (:name token-set4) "sgroup1.ssubgroup1.token-set4"))
|
||||
(t/is (= (:name token-set5) "sgroup2.token-set5"))
|
||||
[node-token5]
|
||||
(ctob/get-children (second node-group2))]
|
||||
|
||||
(t/is (= (:name token1) "tgroup1.tsubgroup1.token1"))
|
||||
(t/is (= (:name token2) "tgroup1.tsubgroup1.token2")))))
|
||||
(t/is (= (count tokens-list) 5))
|
||||
(t/is (= (:name (nth tokens-list 0)) "token1"))
|
||||
(t/is (= (:name (nth tokens-list 1)) "group1.token2"))
|
||||
(t/is (= (:name (nth tokens-list 2)) "group1.token3"))
|
||||
(t/is (= (:name (nth tokens-list 3)) "group1.subgroup11.token4"))
|
||||
(t/is (= (:name (nth tokens-list 4)) "group2.token5"))
|
||||
|
||||
(t/is (= (first node-token1) "token1"))
|
||||
(t/is (= (ctob/group? (second node-token1)) false))
|
||||
(t/is (= (:name (second node-token1)) "token1"))
|
||||
|
||||
(t/is (= (first node-group1) "group1"))
|
||||
(t/is (= (ctob/group? (second node-group1)) true))
|
||||
(t/is (= (count (second node-group1)) 3))
|
||||
|
||||
(t/is (= (first node-token2) "token2"))
|
||||
(t/is (= (ctob/group? (second node-token2)) false))
|
||||
(t/is (= (:name (second node-token2)) "group1.token2"))
|
||||
|
||||
(t/is (= (first node-token3) "token3"))
|
||||
(t/is (= (ctob/group? (second node-token3)) false))
|
||||
(t/is (= (:name (second node-token3)) "group1.token3"))
|
||||
|
||||
(t/is (= (first node-subgroup11) "subgroup11"))
|
||||
(t/is (= (ctob/group? (second node-subgroup11)) true))
|
||||
(t/is (= (count (second node-subgroup11)) 1))
|
||||
|
||||
(t/is (= (first node-token4) "token4"))
|
||||
(t/is (= (ctob/group? (second node-token4)) false))
|
||||
(t/is (= (:name (second node-token4)) "group1.subgroup11.token4"))
|
||||
|
||||
(t/is (= (first node-token5) "token5"))
|
||||
(t/is (= (ctob/group? (second node-token5)) false))
|
||||
(t/is (= (:name (second node-token5)) "group2.token5"))))
|
||||
|
||||
(t/deftest update-token-in-groups
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "test-token-1"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.test-token-2"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.test-token-3"
|
||||
:type :boolean
|
||||
:value true)))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-token-in-set "test-token-set" "group1.test-token-2"
|
||||
(fn [token]
|
||||
(assoc token
|
||||
:description "some description"
|
||||
:value false))))
|
||||
|
||||
token-set (ctob/get-set tokens-lib "test-token-set")
|
||||
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||
group1' (get-in token-set' [:tokens "group1"])
|
||||
token (get-in token-set [:tokens "group1" "test-token-2"])
|
||||
token' (get-in token-set' [:tokens "group1" "test-token-2"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||
(t/is (= (count group1') 2))
|
||||
(t/is (= (d/index-of (keys group1') "test-token-2") 0))
|
||||
(t/is (= (:name token') "group1.test-token-2"))
|
||||
(t/is (= (:description token') "some description"))
|
||||
(t/is (= (:value token') false))
|
||||
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))
|
||||
(t/is (dt/is-after? (:modified-at token') (:modified-at token)))))
|
||||
|
||||
(t/deftest rename-token-in-groups
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "test-token-1"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.test-token-2"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.test-token-3"
|
||||
:type :boolean
|
||||
:value true)))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-token-in-set "test-token-set" "group1.test-token-2"
|
||||
(fn [token]
|
||||
(assoc token
|
||||
:name "group1.updated-name"))))
|
||||
|
||||
token-set (ctob/get-set tokens-lib "test-token-set")
|
||||
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||
group1' (get-in token-set' [:tokens "group1"])
|
||||
token (get-in token-set [:tokens "group1" "test-token-2"])
|
||||
token' (get-in token-set' [:tokens "group1" "updated-name"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||
(t/is (= (count group1') 2))
|
||||
(t/is (= (d/index-of (keys group1') "updated-name") 0))
|
||||
(t/is (= (:name token') "group1.updated-name"))
|
||||
(t/is (= (:description token') nil))
|
||||
(t/is (= (:value token') true))
|
||||
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))
|
||||
(t/is (dt/is-after? (:modified-at token') (:modified-at token)))))
|
||||
|
||||
(t/deftest move-token-of-group
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "test-token-1"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.test-token-2"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.test-token-3"
|
||||
:type :boolean
|
||||
:value true)))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-token-in-set "test-token-set" "group1.test-token-2"
|
||||
(fn [token]
|
||||
(assoc token
|
||||
:name "group2.updated-name"))))
|
||||
|
||||
token-set (ctob/get-set tokens-lib "test-token-set")
|
||||
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||
group1' (get-in token-set' [:tokens "group1"])
|
||||
group2' (get-in token-set' [:tokens "group2"])
|
||||
token (get-in token-set [:tokens "group1" "test-token-2"])
|
||||
token' (get-in token-set' [:tokens "group2" "updated-name"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||
(t/is (= (count group1') 1))
|
||||
(t/is (= (count group2') 1))
|
||||
(t/is (= (d/index-of (keys group2') "updated-name") 0))
|
||||
(t/is (= (:name token') "group2.updated-name"))
|
||||
(t/is (= (:description token') nil))
|
||||
(t/is (= (:value token') true))
|
||||
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))
|
||||
(t/is (dt/is-after? (:modified-at token') (:modified-at token)))))
|
||||
|
||||
(t/deftest delete-token-in-group
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "test-token-1"
|
||||
:type :boolean
|
||||
:value true))
|
||||
(ctob/add-token-in-set "test-token-set"
|
||||
(ctob/make-token :name "group1.test-token-2"
|
||||
:type :boolean
|
||||
:value true)))
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/delete-token-from-set "test-token-set" "group1.test-token-2"))
|
||||
|
||||
token-set (ctob/get-set tokens-lib "test-token-set")
|
||||
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||
token' (get-in token-set' [:tokens "group1" "test-token-2"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||
(t/is (= (count (:tokens token-set')) 1))
|
||||
(t/is (nil? token'))
|
||||
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set))))))
|
||||
|
||||
(t/testing "grouped sets"
|
||||
(t/deftest grouped-sets
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "token-set-1"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-2"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-3"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/subgroup11/token-set-4"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group2/token-set-5")))
|
||||
|
||||
sets-list (ctob/get-sets tokens-lib)
|
||||
|
||||
sets-tree (ctob/get-set-tree tokens-lib)
|
||||
|
||||
[node-set1 node-group1 node-group2]
|
||||
(ctob/get-children sets-tree)
|
||||
|
||||
[node-set2 node-set3 node-subgroup11]
|
||||
(ctob/get-children (second node-group1))
|
||||
|
||||
[node-set4]
|
||||
(ctob/get-children (second node-subgroup11))
|
||||
|
||||
[node-set5]
|
||||
(ctob/get-children (second node-group2))]
|
||||
|
||||
(t/is (= (count sets-list) 5))
|
||||
(t/is (= (:name (nth sets-list 0)) "token-set-1"))
|
||||
(t/is (= (:name (nth sets-list 1)) "group1/token-set-2"))
|
||||
(t/is (= (:name (nth sets-list 2)) "group1/token-set-3"))
|
||||
(t/is (= (:name (nth sets-list 3)) "group1/subgroup11/token-set-4"))
|
||||
(t/is (= (:name (nth sets-list 4)) "group2/token-set-5"))
|
||||
|
||||
(t/is (= (first node-set1) "token-set-1"))
|
||||
(t/is (= (ctob/group? (second node-set1)) false))
|
||||
(t/is (= (:name (second node-set1)) "token-set-1"))
|
||||
|
||||
(t/is (= (first node-group1) "group1"))
|
||||
(t/is (= (ctob/group? (second node-group1)) true))
|
||||
(t/is (= (count (second node-group1)) 3))
|
||||
|
||||
(t/is (= (first node-set2) "token-set-2"))
|
||||
(t/is (= (ctob/group? (second node-set2)) false))
|
||||
(t/is (= (:name (second node-set2)) "group1/token-set-2"))
|
||||
|
||||
(t/is (= (first node-set3) "token-set-3"))
|
||||
(t/is (= (ctob/group? (second node-set3)) false))
|
||||
(t/is (= (:name (second node-set3)) "group1/token-set-3"))
|
||||
|
||||
(t/is (= (first node-subgroup11) "subgroup11"))
|
||||
(t/is (= (ctob/group? (second node-subgroup11)) true))
|
||||
(t/is (= (count (second node-subgroup11)) 1))
|
||||
|
||||
(t/is (= (first node-set4) "token-set-4"))
|
||||
(t/is (= (ctob/group? (second node-set4)) false))
|
||||
(t/is (= (:name (second node-set4)) "group1/subgroup11/token-set-4"))
|
||||
|
||||
(t/is (= (first node-set5) "token-set-5"))
|
||||
(t/is (= (ctob/group? (second node-set5)) false))
|
||||
(t/is (= (:name (second node-set5)) "group2/token-set-5"))))
|
||||
|
||||
(t/deftest update-set-in-groups
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "token-set-1"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-2"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-3"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/subgroup11/token-set-4"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group2/token-set-5")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-set "group1/token-set-2"
|
||||
(fn [token-set]
|
||||
(assoc token-set :description "some description"))))
|
||||
|
||||
sets-tree (ctob/get-set-tree tokens-lib)
|
||||
sets-tree' (ctob/get-set-tree tokens-lib')
|
||||
group1' (get sets-tree' "group1")
|
||||
token-set (get-in sets-tree ["group1" "token-set-2"])
|
||||
token-set' (get-in sets-tree' ["group1" "token-set-2"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 5))
|
||||
(t/is (= (count group1') 3))
|
||||
(t/is (= (d/index-of (keys group1') "token-set-2") 0))
|
||||
(t/is (= (:name token-set') "group1/token-set-2"))
|
||||
(t/is (= (:description token-set') "some description"))
|
||||
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))))
|
||||
|
||||
(t/deftest rename-set-in-groups
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "token-set-1"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-2"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-3"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/subgroup11/token-set-4"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group2/token-set-5")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-set "group1/token-set-2"
|
||||
(fn [token-set]
|
||||
(assoc token-set
|
||||
:name "group1/updated-name"))))
|
||||
|
||||
sets-tree (ctob/get-set-tree tokens-lib)
|
||||
sets-tree' (ctob/get-set-tree tokens-lib')
|
||||
group1' (get sets-tree' "group1")
|
||||
token-set (get-in sets-tree ["group1" "token-set-2"])
|
||||
token-set' (get-in sets-tree' ["group1" "updated-name"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 5))
|
||||
(t/is (= (count group1') 3))
|
||||
(t/is (= (d/index-of (keys group1') "updated-name") 0))
|
||||
(t/is (= (:name token-set') "group1/updated-name"))
|
||||
(t/is (= (:description token-set') nil))
|
||||
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))))
|
||||
|
||||
(t/deftest move-set-of-group
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "token-set-1"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-2"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-3"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/subgroup11/token-set-4"))
|
||||
#_(ctob/add-set (ctob/make-token-set :name "group2/token-set-5")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-set "group1/token-set-2"
|
||||
(fn [token-set]
|
||||
(assoc token-set
|
||||
:name "group2/updated-name"))))
|
||||
|
||||
sets-tree (ctob/get-set-tree tokens-lib)
|
||||
sets-tree' (ctob/get-set-tree tokens-lib')
|
||||
group1' (get sets-tree' "group1")
|
||||
group2' (get sets-tree' "group2")
|
||||
token-set (get-in sets-tree ["group1" "token-set-2"])
|
||||
token-set' (get-in sets-tree' ["group2" "updated-name"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 4))
|
||||
(t/is (= (count group1') 2))
|
||||
(t/is (= (count group2') 1))
|
||||
(t/is (= (d/index-of (keys group2') "updated-name") 0))
|
||||
(t/is (= (:name token-set') "group2/updated-name"))
|
||||
(t/is (= (:description token-set') nil))
|
||||
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))))
|
||||
|
||||
(t/deftest delete-set-in-group
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-set (ctob/make-token-set :name "token-set-1"))
|
||||
(ctob/add-set (ctob/make-token-set :name "group1/token-set-2")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/delete-set "group1/token-set-2"))
|
||||
|
||||
sets-tree' (ctob/get-set-tree tokens-lib')
|
||||
token-set' (get-in sets-tree' ["group1" "token-set-2"])]
|
||||
|
||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||
(t/is (= (count sets-tree') 1))
|
||||
(t/is (nil? token-set')))))
|
||||
|
||||
(t/testing "grouped themes"
|
||||
(t/deftest grouped-themes
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-theme (ctob/make-token-theme :name "token-theme-1"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-2"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-3"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/subgroup11/token-theme-4"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group2/token-theme-5")))
|
||||
|
||||
themes-list (ctob/get-themes tokens-lib)
|
||||
|
||||
themes-tree (ctob/get-theme-tree tokens-lib)
|
||||
|
||||
[node-theme1 node-group1 node-group2]
|
||||
(ctob/get-children themes-tree)
|
||||
|
||||
[node-theme2 node-theme3 node-subgroup11]
|
||||
(ctob/get-children (second node-group1))
|
||||
|
||||
[node-theme4]
|
||||
(ctob/get-children (second node-subgroup11))
|
||||
|
||||
[node-theme5]
|
||||
(ctob/get-children (second node-group2))]
|
||||
|
||||
(t/is (= (count themes-list) 5))
|
||||
(t/is (= (:name (nth themes-list 0)) "token-theme-1"))
|
||||
(t/is (= (:name (nth themes-list 1)) "group1/token-theme-2"))
|
||||
(t/is (= (:name (nth themes-list 2)) "group1/token-theme-3"))
|
||||
(t/is (= (:name (nth themes-list 3)) "group1/subgroup11/token-theme-4"))
|
||||
(t/is (= (:name (nth themes-list 4)) "group2/token-theme-5"))
|
||||
|
||||
(t/is (= (first node-theme1) "token-theme-1"))
|
||||
(t/is (= (ctob/group? (second node-theme1)) false))
|
||||
(t/is (= (:name (second node-theme1)) "token-theme-1"))
|
||||
|
||||
(t/is (= (first node-group1) "group1"))
|
||||
(t/is (= (ctob/group? (second node-group1)) true))
|
||||
(t/is (= (count (second node-group1)) 3))
|
||||
|
||||
(t/is (= (first node-theme2) "token-theme-2"))
|
||||
(t/is (= (ctob/group? (second node-theme2)) false))
|
||||
(t/is (= (:name (second node-theme2)) "group1/token-theme-2"))
|
||||
|
||||
(t/is (= (first node-theme3) "token-theme-3"))
|
||||
(t/is (= (ctob/group? (second node-theme3)) false))
|
||||
(t/is (= (:name (second node-theme3)) "group1/token-theme-3"))
|
||||
|
||||
(t/is (= (first node-subgroup11) "subgroup11"))
|
||||
(t/is (= (ctob/group? (second node-subgroup11)) true))
|
||||
(t/is (= (count (second node-subgroup11)) 1))
|
||||
|
||||
(t/is (= (first node-theme4) "token-theme-4"))
|
||||
(t/is (= (ctob/group? (second node-theme4)) false))
|
||||
(t/is (= (:name (second node-theme4)) "group1/subgroup11/token-theme-4"))
|
||||
|
||||
(t/is (= (first node-theme5) "token-theme-5"))
|
||||
(t/is (= (ctob/group? (second node-theme5)) false))
|
||||
(t/is (= (:name (second node-theme5)) "group2/token-theme-5"))))
|
||||
|
||||
(t/deftest update-theme-in-groups
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-theme (ctob/make-token-theme :name "token-theme-1"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-2"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-3"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/subgroup11/token-theme-4"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group2/token-theme-5")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-theme "group1/token-theme-2"
|
||||
(fn [token-theme]
|
||||
(assoc token-theme :description "some description"))))
|
||||
|
||||
themes-tree (ctob/get-theme-tree tokens-lib)
|
||||
themes-tree' (ctob/get-theme-tree tokens-lib')
|
||||
group1' (get themes-tree' "group1")
|
||||
token-theme (get-in themes-tree ["group1" "token-theme-2"])
|
||||
token-theme' (get-in themes-tree' ["group1" "token-theme-2"])]
|
||||
|
||||
(t/is (= (ctob/theme-count tokens-lib') 5))
|
||||
(t/is (= (count group1') 3))
|
||||
(t/is (= (d/index-of (keys group1') "token-theme-2") 0))
|
||||
(t/is (= (:name token-theme') "group1/token-theme-2"))
|
||||
(t/is (= (:description token-theme') "some description"))
|
||||
(t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme)))))
|
||||
|
||||
(t/deftest rename-theme-in-groups
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-theme (ctob/make-token-theme :name "token-theme-1"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-2"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-3"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/subgroup11/token-theme-4"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group2/token-theme-5")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-theme "group1/token-theme-2"
|
||||
(fn [token-theme]
|
||||
(assoc token-theme
|
||||
:name "group1/updated-name"))))
|
||||
|
||||
themes-tree (ctob/get-theme-tree tokens-lib)
|
||||
themes-tree' (ctob/get-theme-tree tokens-lib')
|
||||
group1' (get themes-tree' "group1")
|
||||
token-theme (get-in themes-tree ["group1" "token-theme-2"])
|
||||
token-theme' (get-in themes-tree' ["group1" "updated-name"])]
|
||||
|
||||
(t/is (= (ctob/theme-count tokens-lib') 5))
|
||||
(t/is (= (count group1') 3))
|
||||
(t/is (= (d/index-of (keys group1') "updated-name") 0))
|
||||
(t/is (= (:name token-theme') "group1/updated-name"))
|
||||
(t/is (= (:description token-theme') nil))
|
||||
(t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme)))))
|
||||
|
||||
(t/deftest move-theme-of-group
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-theme (ctob/make-token-theme :name "token-theme-1"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-2"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-3"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/subgroup11/token-theme-4"))
|
||||
#_(ctob/add-theme (ctob/make-token-theme :name "group2/token-theme-5")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/update-theme "group1/token-theme-2"
|
||||
(fn [token-theme]
|
||||
(assoc token-theme
|
||||
:name "group2/updated-name"))))
|
||||
|
||||
themes-tree (ctob/get-theme-tree tokens-lib)
|
||||
themes-tree' (ctob/get-theme-tree tokens-lib')
|
||||
group1' (get themes-tree' "group1")
|
||||
group2' (get themes-tree' "group2")
|
||||
token-theme (get-in themes-tree ["group1" "token-theme-2"])
|
||||
token-theme' (get-in themes-tree' ["group2" "updated-name"])]
|
||||
|
||||
(t/is (= (ctob/theme-count tokens-lib') 4))
|
||||
(t/is (= (count group1') 2))
|
||||
(t/is (= (count group2') 1))
|
||||
(t/is (= (d/index-of (keys group2') "updated-name") 0))
|
||||
(t/is (= (:name token-theme') "group2/updated-name"))
|
||||
(t/is (= (:description token-theme') nil))
|
||||
(t/is (dt/is-after? (:modified-at token-theme') (:modified-at token-theme)))))
|
||||
|
||||
(t/deftest delete-theme-in-group
|
||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
||||
(ctob/add-theme (ctob/make-token-theme :name "token-theme-1"))
|
||||
(ctob/add-theme (ctob/make-token-theme :name "group1/token-theme-2")))
|
||||
|
||||
tokens-lib' (-> tokens-lib
|
||||
(ctob/delete-theme "group1/token-theme-2"))
|
||||
|
||||
themes-tree' (ctob/get-theme-tree tokens-lib')
|
||||
token-theme' (get-in themes-tree' ["group1" "token-theme-2"])]
|
||||
|
||||
(t/is (= (ctob/theme-count tokens-lib') 1))
|
||||
(t/is (= (count themes-tree') 1))
|
||||
(t/is (nil? token-theme'))))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue