🔧 Read token sets by id instead of name

This commit is contained in:
Andrés Moya
2025-08-18 17:41:42 +02:00
committed by Andrés Moya
parent 473066cf5c
commit 021b8f81ca
17 changed files with 409 additions and 258 deletions

View File

@@ -27,7 +27,8 @@
(-> (thf/sample-file :file1)
(tht/add-tokens-lib)
(tht/update-tokens-lib #(-> %
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-theme (ctob/make-token-theme :name "test-theme"
:sets #{"test-token-set"}))
(ctob/set-active-themes #{"/test-theme"})
@@ -131,17 +132,17 @@
frame1 (ths/get-shape file :frame1)
text1 (ths/get-shape file :text1)
circle1 (ths/get-shape file :circle1)
token-radius (tht/get-token file "test-token-set" (thi/id :token-radius))
token-rotation (tht/get-token file "test-token-set" (thi/id :token-rotation))
token-opacity (tht/get-token file "test-token-set" (thi/id :token-opacity))
token-stroke-width (tht/get-token file "test-token-set" (thi/id :token-stroke-width))
token-color (tht/get-token file "test-token-set" (thi/id :token-color))
token-dimensions (tht/get-token file "test-token-set" (thi/id :token-dimensions))
token-font-size (tht/get-token file "test-token-set" (thi/id :token-font-size))
token-letter-spacing (tht/get-token file "test-token-set" (thi/id :token-letter-spacing))
token-font-family (tht/get-token file "test-token-set" (thi/id :token-font-family))
token-sizing (tht/get-token file "test-token-set" (thi/id :token-sizing))
token-spacing (tht/get-token file "test-token-set" (thi/id :token-spacing))
token-radius (tht/get-token file (thi/id :test-token-set) (thi/id :token-radius))
token-rotation (tht/get-token file (thi/id :test-token-set) (thi/id :token-rotation))
token-opacity (tht/get-token file (thi/id :test-token-set) (thi/id :token-opacity))
token-stroke-width (tht/get-token file (thi/id :test-token-set) (thi/id :token-stroke-width))
token-color (tht/get-token file (thi/id :test-token-set) (thi/id :token-color))
token-dimensions (tht/get-token file (thi/id :test-token-set) (thi/id :token-dimensions))
token-font-size (tht/get-token file (thi/id :test-token-set) (thi/id :token-font-size))
token-letter-spacing (tht/get-token file (thi/id :test-token-set) (thi/id :token-letter-spacing))
token-font-family (tht/get-token file (thi/id :test-token-set) (thi/id :token-font-family))
token-sizing (tht/get-token file (thi/id :test-token-set) (thi/id :token-sizing))
token-spacing (tht/get-token file (thi/id :test-token-set) (thi/id :token-spacing))
;; ==== Action
changes (-> (-> (pcb/empty-changes nil)

View File

@@ -13,6 +13,7 @@
[app.common.test-helpers.tokens :as tht]
[app.common.types.tokens-lib :as ctob]
[app.common.uuid :as uuid]
[clojure.datafy :refer [datafy]]
[clojure.test :as t]))
(t/use-fixtures :each thi/test-fixture)
@@ -165,9 +166,11 @@
(t/deftest set-token-test
(t/testing "delete token"
(let [set-name "foo"
set-id (uuid/next)
token-id (uuid/next)
file (setup-file #(-> %
(ctob/add-set (ctob/make-token-set :name set-name))
(ctob/add-set (ctob/make-token-set :id set-id
:name set-name))
(ctob/add-token-in-set set-name (ctob/make-token {:name "to.delete.color.red"
:id token-id
:value "red"
@@ -180,16 +183,18 @@
redo-lib (tht/get-tokens-lib redo)
undo (thf/apply-undo-changes redo changes)
undo-lib (tht/get-tokens-lib undo)]
(t/is (nil? (ctob/get-token-in-set redo-lib set-name token-id)))
(t/is (nil? (ctob/get-token-in-set redo-lib set-id token-id)))
;; Undo
(t/is (some? (ctob/get-token-in-set undo-lib set-name token-id)))))
(t/is (some? (ctob/get-token-in-set undo-lib set-id token-id)))))
(t/testing "add token"
(let [set-name "foo"
set-id (uuid/next)
token (ctob/make-token {:name "to.add.color.red"
:value "red"
:type :color})
file (setup-file #(-> % (ctob/add-set (ctob/make-token-set :name set-name))))
file (setup-file #(-> % (ctob/add-set (ctob/make-token-set :id set-id
:name set-name))))
changes (-> (pcb/empty-changes)
(pcb/with-library-data (:data file))
(pcb/set-token set-name (:id token) token))
@@ -198,12 +203,13 @@
redo-lib (tht/get-tokens-lib redo)
undo (thf/apply-undo-changes redo changes)
undo-lib (tht/get-tokens-lib undo)]
(t/is (= token (ctob/get-token-in-set redo-lib set-name (:id token))))
(t/is (= token (ctob/get-token-in-set redo-lib set-id (:id token))))
;; Undo
(t/is (nil? (ctob/get-token-in-set undo-lib set-name (:id token))))))
(t/is (nil? (ctob/get-token-in-set undo-lib set-id (:id token))))))
(t/testing "update token"
(let [set-name "foo"
set-id (uuid/next)
prev-token (ctob/make-token {:name "to.update.color.red"
:value "red"
:type :color})
@@ -211,7 +217,8 @@
(assoc :name "color.red.changed")
(assoc :value "blue"))
file (setup-file #(-> %
(ctob/add-set (ctob/make-token-set :name set-name))
(ctob/add-set (ctob/make-token-set :id set-id
:name set-name))
(ctob/add-token-in-set set-name prev-token)))
changes (-> (pcb/empty-changes)
(pcb/with-library-data (:data file))
@@ -221,17 +228,18 @@
redo-lib (tht/get-tokens-lib redo)
undo (thf/apply-undo-changes redo changes)
undo-lib (tht/get-tokens-lib undo)]
(t/is (tht/token-data-eq? token (ctob/get-token-in-set redo-lib set-name (:id token))))
(t/is (tht/token-data-eq? token (ctob/get-token-in-set redo-lib set-id (:id token))))
;; Undo
(t/is (tht/token-data-eq? prev-token (ctob/get-token-in-set undo-lib set-name (:id prev-token)))))))
(t/is (tht/token-data-eq? prev-token (ctob/get-token-in-set undo-lib set-id (:id prev-token)))))))
(t/deftest set-token-set-test
(t/testing "delete token set"
(let [set-name "foo"
file (setup-file #(ctob/add-set % (ctob/make-token-set :name set-name)))
set-id (uuid/next)
file (setup-file #(ctob/add-set % (ctob/make-token-set :id set-id :name set-name)))
changes (-> (pcb/empty-changes)
(pcb/with-library-data (:data file))
(pcb/set-token-set set-name false nil))
(pcb/set-token-set set-id false nil))
redo (thf/apply-changes file changes)
redo-lib (tht/get-tokens-lib redo)
@@ -243,11 +251,12 @@
(t/testing "add token set"
(let [set-name "foo"
token-set (ctob/make-token-set :name set-name)
set-id (uuid/next)
token-set (ctob/make-token-set :id set-id :name set-name)
file (setup-file identity)
changes (-> (pcb/empty-changes)
(pcb/with-library-data (:data file))
(pcb/set-token-set set-name false token-set))
(pcb/set-token-set set-id false token-set))
redo (thf/apply-changes file changes)
redo-lib (tht/get-tokens-lib redo)
@@ -259,28 +268,26 @@
(t/testing "update token set"
(let [set-name "foo"
token-name "bar"
token (ctob/make-token {:name token-name
:value "red"
:type :color})
file (setup-file #(-> (ctob/add-set % (ctob/make-token-set :name set-name))
(ctob/add-token-in-set set-name token)))
prev-token-set (-> file tht/get-tokens-lib (ctob/get-set set-name))
set-id (uuid/next)
token-set (ctob/make-token-set :id set-id :name set-name)
file (setup-file #(-> (ctob/add-set % token-set)))
new-set-name "foo1"
changes (-> (pcb/empty-changes)
(pcb/with-library-data (:data file))
(pcb/set-token-set set-name false (ctob/rename prev-token-set new-set-name)))
(pcb/set-token-set set-id false (ctob/rename token-set new-set-name)))
redo (thf/apply-changes file changes)
redo-lib (tht/get-tokens-lib redo)
undo (thf/apply-undo-changes redo changes)
undo-lib (tht/get-tokens-lib undo)]
redo-token-set (ctob/get-set redo-lib set-id)
undo (thf/apply-undo-changes redo changes)
undo-lib (tht/get-tokens-lib undo)
undo-token-set (ctob/get-set undo-lib set-id)]
(t/is (= (ctob/get-name redo-token-set) new-set-name))
;; Undo
(t/is (some? (ctob/get-token-in-set undo-lib set-name (:id token))))
(t/is (nil? (ctob/get-token-in-set undo-lib new-set-name (:id token))))
;; Redo
(t/is (nil? (ctob/get-token-in-set redo-lib set-name (:id token))))
(t/is (some? (ctob/get-token-in-set redo-lib new-set-name (:id token)))))))
(t/is (= (ctob/get-name undo-token-set) set-name)))))
(t/deftest generate-toggle-token-set-group-test
(t/testing "toggling set group with no active sets inside will activate all child sets"

View File

@@ -178,7 +178,8 @@
(t/deftest tokens-tree
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "A"
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "A"
:tokens {"foo.bar.baz" (ctob/make-token :name "foo.bar.baz"
:type :boolean
:value true)
@@ -188,7 +189,7 @@
"baz.boo" (ctob/make-token :name "baz.boo"
:type :boolean
:value true)})))
expected (-> (ctob/get-set tokens-lib "A")
expected (-> (ctob/get-set tokens-lib (thi/id :test-token-set))
(ctob/get-tokens-map)
(ctob/tokens-tree))]
(t/is (= (get-in expected ["foo" "bar" "baz" :name]) "foo.bar.baz"))
@@ -238,11 +239,12 @@
(t/deftest add-token-set-to-token-lib
(let [tokens-lib (ctob/make-tokens-lib)
token-set (ctob/make-token-set :name "test-token-set")
token-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set")
tokens-lib' (ctob/add-set tokens-lib token-set)
token-sets' (ctob/get-sets tokens-lib')
token-set' (ctob/get-set tokens-lib' "test-token-set")]
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))]
(t/is (= (ctob/set-count tokens-lib') 1))
(t/is (= (first token-sets') token-set))
@@ -250,7 +252,8 @@
(t/deftest update-token-set
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set")))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set")))
tokens-lib' (-> tokens-lib
(ctob/update-set "test-token-set"
@@ -260,8 +263,8 @@
(fn [token-set]
(ctob/set-description token-set "no-effect"))))
token-set (ctob/get-set tokens-lib "test-token-set")
token-set' (ctob/get-set tokens-lib' "test-token-set")]
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))]
(t/is (= (ctob/set-count tokens-lib') 1))
(t/is (= (ctob/get-name token-set') "test-token-set"))
@@ -270,15 +273,16 @@
(t/deftest rename-token-set
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set")))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set")))
tokens-lib' (-> tokens-lib
(ctob/update-set "test-token-set"
(fn [token-set]
(ctob/rename token-set "updated-name"))))
token-set (ctob/get-set tokens-lib "test-token-set")
token-set' (ctob/get-set tokens-lib' "updated-name")]
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))]
(t/is (= (ctob/set-count tokens-lib') 1))
(t/is (= (ctob/get-name token-set') "updated-name"))
@@ -303,15 +307,16 @@
(t/is (= expected-theme-sets #{"foo/bar-renamed/baz-renamed/baz-child-1"}))))
(t/deftest delete-token-set
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-theme (ctob/make-token-theme :name "test-token-theme" :sets #{"test-token-set"})))
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-theme (ctob/make-token-theme :name "test-token-theme" :sets #{"test-token-set"})))
tokens-lib' (-> tokens-lib
(ctob/delete-set-path "S-test-token-set")
(ctob/delete-set-path "S-not-existing-set"))
tokens-lib' (-> tokens-lib
(ctob/delete-set-path "S-test-token-set")
(ctob/delete-set-path "S-not-existing-set"))
token-set' (ctob/get-set tokens-lib' "updated-name")
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token-theme' (ctob/get-theme tokens-lib' "" "test-token-theme")]
(t/is (= (ctob/set-count tokens-lib') 0))
@@ -320,13 +325,14 @@
(t/deftest duplicate-token-set
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"
:tokens {"test-token"
(ctob/make-token :id (thi/new-id! :test-token)
:name "test-token"
:type :boolean
:value true)})))
token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
token-set-copy (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"})
token (ctob/get-token token-set-copy (thi/id :test-token))]
(t/is (some? token-set-copy))
@@ -336,16 +342,17 @@
(t/deftest duplicate-token-set-twice
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"
:tokens {"test-token"
(ctob/make-token :id (thi/new-id! :test-token)
:name "test-token"
:type :boolean
:value true)})))
tokens-lib (ctob/add-set tokens-lib (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"}))
tokens-lib (ctob/add-set tokens-lib (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"}))
token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
token-set-copy (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"})
token (ctob/get-token token-set-copy (thi/id :test-token))]
(t/is (some? token-set-copy))
@@ -355,9 +362,10 @@
(t/deftest duplicate-empty-token-set
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set")))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set")))
token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
token-set-copy (ctob/duplicate-set (thi/id :test-token-set) tokens-lib {:suffix "copy"})
tokens (ctob/get-tokens-map token-set-copy)]
(t/is (some? token-set-copy))
@@ -368,26 +376,28 @@
(t/deftest duplicate-not-existing-token-set
(let [tokens-lib (ctob/make-tokens-lib)
token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})]
token-set-copy (ctob/duplicate-set (uuid/next) tokens-lib {:suffix "copy"})]
(t/is (nil? token-set-copy))))
(t/deftest active-themes-set-names
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set")))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set")))
tokens-lib' (-> tokens-lib
(ctob/delete-set-path "S-test-token-set")
(ctob/delete-set-path "S-not-existing-set"))
token-set' (ctob/get-set tokens-lib' "updated-name")]
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))]
(t/is (= (ctob/set-count tokens-lib') 0))
(t/is (nil? token-set'))))
(t/deftest add-token
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set")))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set")))
token (ctob/make-token :id (thi/new-id! :token)
:name "test-token"
:type :boolean
@@ -396,8 +406,9 @@
(ctob/add-token-in-set "test-token-set" token)
(ctob/add-token-in-set "not-existing-set" token))
token-set (ctob/get-set tokens-lib "test-token-set")
token-set' (ctob/get-set tokens-lib' "test-token-set")
_ (prn "tokens-lib'" (datafy tokens-lib'))
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token' (ctob/get-token token-set' (thi/id :token))]
(t/is (= (ctob/set-count tokens-lib') 1))
@@ -407,7 +418,8 @@
(t/deftest update-token
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :id (thi/new-id! :test-token-1)
:name "test-token-1"
@@ -434,8 +446,8 @@
(assoc token
:name "no-effect"))))
token-set (ctob/get-set tokens-lib "test-token-set")
token-set' (ctob/get-set tokens-lib' "test-token-set")
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token (ctob/get-token token-set (thi/id :test-token-1))
token' (ctob/get-token token-set' (thi/id :test-token-1))]
@@ -450,7 +462,8 @@
(t/deftest rename-token
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :id (thi/new-id! :test-token-1)
:name "test-token-1"
@@ -468,8 +481,8 @@
(assoc token
:name "updated-name"))))
token-set (ctob/get-set tokens-lib "test-token-set")
token-set' (ctob/get-set tokens-lib' "test-token-set")
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token (ctob/get-token token-set (thi/id :test-token-1))
token' (ctob/get-token token-set' (thi/id :test-token-1))]
@@ -484,7 +497,8 @@
(t/deftest delete-token
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :id (thi/new-id! :test-token)
:name "test-token"
@@ -493,10 +507,10 @@
tokens-lib' (-> tokens-lib
(ctob/delete-token-from-set "test-token-set" (thi/id :test-token))
(ctob/delete-token-from-set "not-existing-set" (thi/id :test-token))
(ctob/delete-token-from-set "test-set" (uuid/next)))
(ctob/delete-token-from-set "test-token-set" (uuid/next)))
token-set (ctob/get-set tokens-lib "test-token-set")
token-set' (ctob/get-set tokens-lib' "test-token-set")
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token' (ctob/get-token token-set' (thi/id :test-token))]
(t/is (= (ctob/set-count tokens-lib') 1))
@@ -885,7 +899,8 @@
(t/deftest add-tokens-in-set
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :name "token1"
:type :boolean
@@ -907,7 +922,7 @@
:type :boolean
:value true)))
set (ctob/get-set tokens-lib "test-token-set")
set (ctob/get-set tokens-lib (thi/id :test-token-set))
tokens-list (ctob/get-tokens set)]
(t/is (= (count tokens-list) 5))
@@ -919,7 +934,8 @@
(t/deftest update-token-in-sets
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :id (thi/new-id! :test-token-1)
:name "test-token-1"
@@ -943,8 +959,8 @@
: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")
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token (ctob/get-token token-set (thi/id :test-token-2))
token' (ctob/get-token token-set' (thi/id :test-token-2))]
@@ -957,7 +973,8 @@
(t/deftest update-token-in-sets-rename
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "test-token-set"))
(ctob/add-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :id (thi/new-id! :test-token-1)
:name "test-token-1"
@@ -980,8 +997,8 @@
(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")
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token (ctob/get-token token-set (thi/id :test-token-2))
token' (ctob/get-token token-set' (thi/id :test-token-2))]
@@ -994,7 +1011,8 @@
(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-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :id (thi/new-id! :test-token-1)
:name "test-token-1"
@@ -1017,8 +1035,8 @@
(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")
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token (ctob/get-token token-set (thi/id :test-token-2))
token' (ctob/get-token token-set' (thi/id :test-token-2))]
@@ -1032,7 +1050,8 @@
(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-set (ctob/make-token-set :id (thi/new-id! :test-token-set)
:name "test-token-set"))
(ctob/add-token-in-set "test-token-set"
(ctob/make-token :id (thi/new-id! :test-token-1)
:name "test-token-1"
@@ -1046,8 +1065,8 @@
tokens-lib' (-> tokens-lib
(ctob/delete-token-from-set "test-token-set" (thi/id :test-token-2)))
token-set (ctob/get-set tokens-lib "test-token-set")
token-set' (ctob/get-set tokens-lib' "test-token-set")
token-set (ctob/get-set tokens-lib (thi/id :test-token-set))
token-set' (ctob/get-set tokens-lib' (thi/id :test-token-set))
token' (ctob/get-token token-set' (thi/id :test-token-2))]
(t/is (= (ctob/set-count tokens-lib') 1))
@@ -1262,79 +1281,85 @@
(t/deftest parse-single-set-legacy-json
(let [json (-> (slurp "test/common_tests/types/data/tokens-single-set-legacy-example.json")
(json/decode {:key-fn identity}))
lib (ctob/parse-decoded-json json "single_set")]
lib (ctob/parse-decoded-json json "single_set")
token-set (ctob/set-by-name lib "single_set")]
(t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
(t/testing "token added"
(t/is (some? (ctob/get-token-by-name lib "single_set" "color.red.100")))))))
(t/is (some? (ctob/get-token-by-name lib (ctob/get-id token-set) "color.red.100")))))))
#?(:clj
(t/deftest parse-single-set-dtcg-json
(let [json (-> (slurp "test/common_tests/types/data/tokens-single-set-dtcg-example.json")
(json/decode {:key-fn identity}))
lib (ctob/parse-decoded-json json "single_set")]
lib (ctob/parse-decoded-json json "single_set")
token-set (ctob/set-by-name lib "single_set")]
(t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
(t/testing "token added"
(t/is (some? (ctob/get-token-by-name lib "single_set" "color.red.100")))))))
(t/is (some? (ctob/get-token-by-name lib (ctob/get-id token-set) "color.red.100")))))))
#?(:clj
(t/deftest parse-multi-set-legacy-json
(let [json (-> (slurp "test/common_tests/types/data/tokens-multi-set-legacy-example.json")
(json/decode {:key-fn identity}))
lib (ctob/parse-decoded-json json "")
token-theme (ctob/get-theme lib "group-1" "theme-1")]
token-theme (ctob/get-theme lib "group-1" "theme-1")
core-set (ctob/set-by-name lib "core")
theme-set (ctob/set-by-name lib "theme")]
(t/is (= '("core" "light" "dark" "theme") (ctob/get-ordered-set-names lib)))
(t/testing "set exists in theme"
(t/is (= (:group token-theme) "group-1"))
(t/is (= (:name token-theme) "theme-1"))
(t/is (= (:sets token-theme) #{"light"})))
(t/testing "tokens exist in core set"
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "colors.red.600")
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib (ctob/get-id core-set) "colors.red.600")
{:name "colors.red.600"
:type :color
:value "#e53e3e"
:description ""}))
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "spacing.multi-value")
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib (ctob/get-id core-set) "spacing.multi-value")
{:name "spacing.multi-value"
:type :spacing
:value "{dimension.sm} {dimension.xl}"
:description "You can have multiple values in a single spacing token"}))
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "theme" "button.primary.background")
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib (ctob/get-id theme-set) "button.primary.background")
{:name "button.primary.background"
:type :color
:value "{accent.default}"
:description ""})))
(t/testing "invalid tokens got discarded"
(t/is (nil? (ctob/get-token-by-name lib "typography" "H1.Bold")))))))
(t/is (nil? (ctob/get-token-by-name lib (ctob/get-id theme-set) "boxShadow.default")))))))
#?(:clj
(t/deftest parse-multi-set-dtcg-json
(let [json (-> (slurp "test/common_tests/types/data/tokens-multi-set-example.json")
(json/decode {:key-fn identity}))
lib (ctob/parse-decoded-json json "")
token-theme (ctob/get-theme lib "group-1" "theme-1")]
token-theme (ctob/get-theme lib "group-1" "theme-1")
core-set (ctob/set-by-name lib "core")
theme-set (ctob/set-by-name lib "theme")]
(t/is (= '("core" "light" "dark" "theme") (ctob/get-ordered-set-names lib)))
(t/testing "set exists in theme"
(t/is (= (:group token-theme) "group-1"))
(t/is (= (:name token-theme) "theme-1"))
(t/is (= (:sets token-theme) #{"light"})))
(t/testing "tokens exist in core set"
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "colors.red.600")
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib (ctob/get-id core-set) "colors.red.600")
{:name "colors.red.600"
:type :color
:value "#e53e3e"
:description ""}))
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "spacing.multi-value")
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib (ctob/get-id core-set) "spacing.multi-value")
{:name "spacing.multi-value"
:type :spacing
:value "{dimension.sm} {dimension.xl}"
:description "You can have multiple values in a single spacing token"}))
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "theme" "button.primary.background")
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib (ctob/get-id theme-set) "button.primary.background")
{:name "button.primary.background"
:type :color
:value "{accent.default}"
:description ""})))
(t/testing "invalid tokens got discarded"
(t/is (nil? (ctob/get-token-by-name lib "typography" "H1.Bold")))))))
(t/is (nil? (ctob/get-token-by-name lib (ctob/get-id theme-set) "boxShadow.default")))))))
#?(:clj
(t/deftest parse-multi-set-dtcg-json-default-team
@@ -1342,14 +1367,15 @@
(json/decode {:key-fn identity}))
lib (ctob/parse-decoded-json json "")
themes (ctob/get-themes lib)
first-theme (first themes)]
first-theme (first themes)
dark-set (ctob/set-by-name lib "dark")]
(t/is (= '("dark") (ctob/get-ordered-set-names lib)))
(t/is (= 1 (count themes)))
(t/testing "existing theme is default theme"
(t/is (= (:group first-theme) ""))
(t/is (= (:name first-theme) ctob/hidden-theme-name)))
(t/testing "token exist in dark set"
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "dark" "small")
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib (ctob/get-id dark-set) "small")
{:name "small"
:value "8"
:type :border-radius