mirror of
https://github.com/penpot/penpot.git
synced 2025-12-12 06:24:17 +01:00
🔧 Use id instead of name for tokens crud
This commit is contained in:
@@ -425,7 +425,7 @@
|
|||||||
[:map {:title "SetTokenChange"}
|
[:map {:title "SetTokenChange"}
|
||||||
[:type [:= :set-token]]
|
[:type [:= :set-token]]
|
||||||
[:set-name :string]
|
[:set-name :string]
|
||||||
[:token-name :string]
|
[:token-id ::sm/uuid]
|
||||||
[:token [:maybe ctob/schema:token-attrs]]]]
|
[:token [:maybe ctob/schema:token-attrs]]]]
|
||||||
|
|
||||||
[:set-base-font-size
|
[:set-base-font-size
|
||||||
@@ -1001,20 +1001,20 @@
|
|||||||
(assoc data :tokens-lib tokens-lib))
|
(assoc data :tokens-lib tokens-lib))
|
||||||
|
|
||||||
(defmethod process-change :set-token
|
(defmethod process-change :set-token
|
||||||
[data {:keys [set-name token-name token]}]
|
[data {:keys [set-name token-id token]}]
|
||||||
(update data :tokens-lib
|
(update data :tokens-lib
|
||||||
(fn [lib]
|
(fn [lib]
|
||||||
(let [lib' (ctob/ensure-tokens-lib lib)]
|
(let [lib' (ctob/ensure-tokens-lib lib)]
|
||||||
(cond
|
(cond
|
||||||
(not token)
|
(not token)
|
||||||
(ctob/delete-token-from-set lib' set-name token-name)
|
(ctob/delete-token-from-set lib' set-name token-id)
|
||||||
|
|
||||||
(not (ctob/get-token-in-set lib' set-name token-name))
|
(not (ctob/get-token-in-set lib' set-name token-id))
|
||||||
(ctob/add-token-in-set lib' set-name (ctob/make-token token))
|
(ctob/add-token-in-set lib' set-name (ctob/make-token token))
|
||||||
|
|
||||||
:else
|
:else
|
||||||
(ctob/update-token-in-set lib' set-name token-name (fn [prev-token]
|
(ctob/update-token-in-set lib' set-name token-id (fn [prev-token]
|
||||||
(ctob/make-token (merge prev-token token)))))))))
|
(ctob/make-token (merge prev-token token)))))))))
|
||||||
|
|
||||||
(defmethod process-change :set-token-set
|
(defmethod process-change :set-token-set
|
||||||
[data {:keys [set-name group? token-set]}]
|
[data {:keys [set-name group? token-set]}]
|
||||||
|
|||||||
@@ -881,30 +881,30 @@
|
|||||||
(update :undo-changes conj {:type :set-tokens-lib :tokens-lib prev-tokens-lib})
|
(update :undo-changes conj {:type :set-tokens-lib :tokens-lib prev-tokens-lib})
|
||||||
(apply-changes-local))))
|
(apply-changes-local))))
|
||||||
|
|
||||||
(defn set-token [changes set-name token-name token]
|
(defn set-token [changes set-name token-id token]
|
||||||
(assert-library! changes)
|
(assert-library! changes)
|
||||||
(let [library-data (::library-data (meta changes))
|
(let [library-data (::library-data (meta changes))
|
||||||
prev-token (some-> (get library-data :tokens-lib)
|
prev-token (some-> (get library-data :tokens-lib)
|
||||||
(ctob/get-set set-name)
|
(ctob/get-set set-name)
|
||||||
(ctob/get-token token-name))]
|
(ctob/get-token token-id))]
|
||||||
(-> changes
|
(-> changes
|
||||||
(update :redo-changes conj {:type :set-token
|
(update :redo-changes conj {:type :set-token
|
||||||
:set-name set-name
|
:set-name set-name
|
||||||
:token-name token-name
|
:token-id token-id
|
||||||
:token token})
|
:token token})
|
||||||
(update :undo-changes conj (if prev-token
|
(update :undo-changes conj (if prev-token
|
||||||
{:type :set-token
|
{:type :set-token
|
||||||
:set-name set-name
|
:set-name set-name
|
||||||
:token-name (or
|
:token-id (or
|
||||||
;; Undo of edit
|
;; Undo of edit
|
||||||
(:name token)
|
(:id token)
|
||||||
;; Undo of delete
|
;; Undo of delete
|
||||||
token-name)
|
token-id)
|
||||||
:token prev-token}
|
:token prev-token}
|
||||||
;; Undo of create token
|
;; Undo of create token
|
||||||
{:type :set-token
|
{:type :set-token
|
||||||
:set-name set-name
|
:set-name set-name
|
||||||
:token-name token-name
|
:token-id token-id
|
||||||
:token nil}))
|
:token nil}))
|
||||||
(apply-changes-local))))
|
(apply-changes-local))))
|
||||||
|
|
||||||
|
|||||||
@@ -28,12 +28,12 @@
|
|||||||
(ctf/update-file-data file #(update % :tokens-lib f)))
|
(ctf/update-file-data file #(update % :tokens-lib f)))
|
||||||
|
|
||||||
(defn get-token
|
(defn get-token
|
||||||
[file set-name token-name]
|
[file set-name token-id]
|
||||||
(let [tokens-lib (:tokens-lib (:data file))]
|
(let [tokens-lib (:tokens-lib (:data file))]
|
||||||
(when tokens-lib
|
(when tokens-lib
|
||||||
(-> tokens-lib
|
(-> tokens-lib
|
||||||
(ctob/get-set set-name)
|
(ctob/get-set set-name)
|
||||||
(ctob/get-token token-name)))))
|
(ctob/get-token token-id)))))
|
||||||
|
|
||||||
(defn token-data-eq?
|
(defn token-data-eq?
|
||||||
"Compare token data without comparing unstable fields."
|
"Compare token data without comparing unstable fields."
|
||||||
|
|||||||
@@ -160,10 +160,12 @@
|
|||||||
;; === Token Set
|
;; === Token Set
|
||||||
|
|
||||||
(defprotocol ITokenSet
|
(defprotocol ITokenSet
|
||||||
|
(token-by-id [_ id] "get a token by its id")
|
||||||
|
(token-by-name [_ id] "get a token by its name")
|
||||||
(add-token [_ token] "add a token at the end of the list")
|
(add-token [_ token] "add a token at the end of the list")
|
||||||
(update-token [_ token-name f] "update a token in the list")
|
(update-token [_ id f] "update a token in the list")
|
||||||
(delete-token [_ token-name] "delete a token from the list")
|
(delete-token [_ id] "delete a token from the list")
|
||||||
(get-token [_ token-name] "return token by token-name")
|
(get-token [_ id] "return token by id")
|
||||||
(get-tokens [_] "return an ordered sequence of all tokens in the set")
|
(get-tokens [_] "return an ordered sequence of all tokens in the set")
|
||||||
(get-tokens-map [_] "return a map of tokens in the set, indexed by token-name"))
|
(get-tokens-map [_] "return a map of tokens in the set, indexed by token-name"))
|
||||||
|
|
||||||
@@ -217,6 +219,13 @@
|
|||||||
tokens))
|
tokens))
|
||||||
|
|
||||||
ITokenSet
|
ITokenSet
|
||||||
|
(token-by-id [_ id]
|
||||||
|
(some #(when (= (:id %) id) %) ;; TODO: this will be made in an efficient way when
|
||||||
|
(vals tokens))) ;; we refactor the tokens lib internal structure
|
||||||
|
|
||||||
|
(token-by-name [_ name]
|
||||||
|
(get tokens name))
|
||||||
|
|
||||||
(add-token [_ token]
|
(add-token [_ token]
|
||||||
(let [token (check-token token)]
|
(let [token (check-token token)]
|
||||||
(TokenSet. id
|
(TokenSet. id
|
||||||
@@ -225,8 +234,8 @@
|
|||||||
(dt/now)
|
(dt/now)
|
||||||
(assoc tokens (:name token) token))))
|
(assoc tokens (:name token) token))))
|
||||||
|
|
||||||
(update-token [this token-name f]
|
(update-token [this id f]
|
||||||
(if-let [token (get tokens token-name)]
|
(if-let [token (token-by-id this id)]
|
||||||
(let [token' (-> (make-token (f token))
|
(let [token' (-> (make-token (f token))
|
||||||
(assoc :modified-at (dt/now)))]
|
(assoc :modified-at (dt/now)))]
|
||||||
(TokenSet. id
|
(TokenSet. id
|
||||||
@@ -240,15 +249,16 @@
|
|||||||
(dissoc (:name token))))))
|
(dissoc (:name token))))))
|
||||||
this))
|
this))
|
||||||
|
|
||||||
(delete-token [_ token-name]
|
(delete-token [this id]
|
||||||
(TokenSet. id
|
(let [token (token-by-id this id)]
|
||||||
name
|
(TokenSet. id
|
||||||
description
|
name
|
||||||
(dt/now)
|
description
|
||||||
(dissoc tokens token-name)))
|
(dt/now)
|
||||||
|
(dissoc tokens (:name token)))))
|
||||||
|
|
||||||
(get-token [_ token-name]
|
(get-token [this id]
|
||||||
(get tokens token-name))
|
(token-by-id this id))
|
||||||
|
|
||||||
(get-tokens [_]
|
(get-tokens [_]
|
||||||
(vals tokens))
|
(vals tokens))
|
||||||
@@ -802,9 +812,10 @@
|
|||||||
(set-path-exists? [_ path] "if a set at `path` exists")
|
(set-path-exists? [_ path] "if a set at `path` exists")
|
||||||
(set-group-path-exists? [_ path] "if a set group at `path` exists")
|
(set-group-path-exists? [_ path] "if a set group at `path` exists")
|
||||||
(add-token-in-set [_ set-name token] "add token to a set")
|
(add-token-in-set [_ set-name token] "add token to a set")
|
||||||
(get-token-in-set [_ set-name token-name] "get token in a set")
|
(get-token-in-set [_ set-name token-id] "get token in a set")
|
||||||
(update-token-in-set [_ set-name token-name f] "update a token in a set")
|
(get-token-by-name [_ set-name token-name] "get token in a set searching by token name")
|
||||||
(delete-token-from-set [_ set-name token-name] "delete a token from a set")
|
(update-token-in-set [_ set-name token-id f] "update a token in a set")
|
||||||
|
(delete-token-from-set [_ set-name token-id] "delete a token from a set")
|
||||||
(toggle-set-in-theme [_ group-name theme-name set-name] "toggle a set used / not used in a theme")
|
(toggle-set-in-theme [_ group-name theme-name set-name] "toggle a set used / not used in a theme")
|
||||||
(get-active-themes-set-names [_] "set of set names that are active in the the active themes")
|
(get-active-themes-set-names [_] "set of set names that are active in the the active themes")
|
||||||
(sets-at-path-all-active? [_ group-path] "compute active state for child sets at `group-path`.
|
(sets-at-path-all-active? [_ group-path] "compute active state for child sets at `group-path`.
|
||||||
@@ -1151,16 +1162,21 @@ Will return a value that matches this schema:
|
|||||||
(add-token-in-set [this set-name token]
|
(add-token-in-set [this set-name token]
|
||||||
(update-set this set-name #(add-token % token)))
|
(update-set this set-name #(add-token % token)))
|
||||||
|
|
||||||
(get-token-in-set [this set-name token-name]
|
(get-token-in-set [this set-name token-id]
|
||||||
(some-> this
|
(some-> this
|
||||||
(get-set set-name)
|
(get-set set-name)
|
||||||
(get-token token-name)))
|
(get-token token-id)))
|
||||||
|
|
||||||
(update-token-in-set [this set-name token-name f]
|
(get-token-by-name [this set-name token-name]
|
||||||
(update-set this set-name #(update-token % token-name f)))
|
(some-> this
|
||||||
|
(get-set set-name)
|
||||||
|
(token-by-name token-name)))
|
||||||
|
|
||||||
(delete-token-from-set [this set-name token-name]
|
(update-token-in-set [this set-name token-id f]
|
||||||
(update-set this set-name #(delete-token % token-name)))
|
(update-set this set-name #(update-token % token-id f)))
|
||||||
|
|
||||||
|
(delete-token-from-set [this set-name token-id]
|
||||||
|
(update-set this set-name #(delete-token % token-id)))
|
||||||
|
|
||||||
(toggle-set-in-theme [this theme-group theme-name set-name]
|
(toggle-set-in-theme [this theme-group theme-name set-name]
|
||||||
(if-let [_theme (get-in themes theme-group theme-name)]
|
(if-let [_theme (get-in themes theme-group theme-name)]
|
||||||
|
|||||||
@@ -32,39 +32,48 @@
|
|||||||
:sets #{"test-token-set"}))
|
:sets #{"test-token-set"}))
|
||||||
(ctob/set-active-themes #{"/test-theme"})
|
(ctob/set-active-themes #{"/test-theme"})
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-radius"
|
(ctob/make-token :id (thi/new-id! :token-radius)
|
||||||
|
:name "token-radius"
|
||||||
:type :border-radius
|
:type :border-radius
|
||||||
:value 10))
|
:value 10))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-rotation"
|
(ctob/make-token :id (thi/new-id! :token-rotation)
|
||||||
|
:name "token-rotation"
|
||||||
:type :rotation
|
:type :rotation
|
||||||
:value 30))
|
:value 30))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-opacity"
|
(ctob/make-token :id (thi/new-id! :token-opacity)
|
||||||
|
:name "token-opacity"
|
||||||
:type :opacity
|
:type :opacity
|
||||||
:value 0.7))
|
:value 0.7))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-stroke-width"
|
(ctob/make-token :id (thi/new-id! :token-stroke-width)
|
||||||
|
:name "token-stroke-width"
|
||||||
:type :stroke-width
|
:type :stroke-width
|
||||||
:value 2))
|
:value 2))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-color"
|
(ctob/make-token :id (thi/new-id! :token-color)
|
||||||
|
:name "token-color"
|
||||||
:type :color
|
:type :color
|
||||||
:value "#00ff00"))
|
:value "#00ff00"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-dimensions"
|
(ctob/make-token :id (thi/new-id! :token-dimensions)
|
||||||
|
:name "token-dimensions"
|
||||||
:type :dimensions
|
:type :dimensions
|
||||||
:value 100))
|
:value 100))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-font-size"
|
(ctob/make-token :id (thi/new-id! :token-font-size)
|
||||||
|
:name "token-font-size"
|
||||||
:type :font-size
|
:type :font-size
|
||||||
:value 24))
|
:value 24))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-letter-spacing"
|
(ctob/make-token :id (thi/new-id! :token-letter-spacing)
|
||||||
|
:name "token-letter-spacing"
|
||||||
:type :letter-spacing
|
:type :letter-spacing
|
||||||
:value 2))
|
:value 2))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-font-family"
|
(ctob/make-token :id (thi/new-id! :token-font-family)
|
||||||
|
:name "token-font-family"
|
||||||
:type :font-family
|
:type :font-family
|
||||||
:value ["Helvetica" "Arial" "sans-serif"]))))
|
:value ["Helvetica" "Arial" "sans-serif"]))))
|
||||||
(tho/add-frame :frame1)
|
(tho/add-frame :frame1)
|
||||||
@@ -86,19 +95,19 @@
|
|||||||
|
|
||||||
(t/deftest apply-tokens-to-shape
|
(t/deftest apply-tokens-to-shape
|
||||||
(let [;; ==== Setup
|
(let [;; ==== Setup
|
||||||
file (setup-file)
|
file (setup-file)
|
||||||
page (thf/current-page file)
|
page (thf/current-page file)
|
||||||
frame1 (ths/get-shape file :frame1)
|
frame1 (ths/get-shape file :frame1)
|
||||||
text1 (ths/get-shape file :text1)
|
text1 (ths/get-shape file :text1)
|
||||||
token-radius (tht/get-token file "test-token-set" "token-radius")
|
token-radius (tht/get-token file "test-token-set" (thi/id :token-radius))
|
||||||
token-rotation (tht/get-token file "test-token-set" "token-rotation")
|
token-rotation (tht/get-token file "test-token-set" (thi/id :token-rotation))
|
||||||
token-opacity (tht/get-token file "test-token-set" "token-opacity")
|
token-opacity (tht/get-token file "test-token-set" (thi/id :token-opacity))
|
||||||
token-stroke-width (tht/get-token file "test-token-set" "token-stroke-width")
|
token-stroke-width (tht/get-token file "test-token-set" (thi/id :token-stroke-width))
|
||||||
token-color (tht/get-token file "test-token-set" "token-color")
|
token-color (tht/get-token file "test-token-set" (thi/id :token-color))
|
||||||
token-dimensions (tht/get-token file "test-token-set" "token-dimensions")
|
token-dimensions (tht/get-token file "test-token-set" (thi/id :token-dimensions))
|
||||||
token-font-size (tht/get-token file "test-token-set" "token-font-size")
|
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" "token-letter-spacing")
|
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" "token-font-family")
|
token-font-family (tht/get-token file "test-token-set" (thi/id :token-font-family))
|
||||||
|
|
||||||
;; ==== Action
|
;; ==== Action
|
||||||
changes (-> (-> (pcb/empty-changes nil)
|
changes (-> (-> (pcb/empty-changes nil)
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
[app.common.test-helpers.ids-map :as thi]
|
[app.common.test-helpers.ids-map :as thi]
|
||||||
[app.common.test-helpers.tokens :as tht]
|
[app.common.test-helpers.tokens :as tht]
|
||||||
[app.common.types.tokens-lib :as ctob]
|
[app.common.types.tokens-lib :as ctob]
|
||||||
|
[app.common.uuid :as uuid]
|
||||||
[clojure.test :as t]))
|
[clojure.test :as t]))
|
||||||
|
|
||||||
(t/use-fixtures :each thi/test-fixture)
|
(t/use-fixtures :each thi/test-fixture)
|
||||||
@@ -164,23 +165,24 @@
|
|||||||
(t/deftest set-token-test
|
(t/deftest set-token-test
|
||||||
(t/testing "delete token"
|
(t/testing "delete token"
|
||||||
(let [set-name "foo"
|
(let [set-name "foo"
|
||||||
token-name "to.delete.color.red"
|
token-id (uuid/next)
|
||||||
file (setup-file #(-> %
|
file (setup-file #(-> %
|
||||||
(ctob/add-set (ctob/make-token-set :name set-name))
|
(ctob/add-set (ctob/make-token-set :name set-name))
|
||||||
(ctob/add-token-in-set set-name (ctob/make-token {:name token-name
|
(ctob/add-token-in-set set-name (ctob/make-token {:name "to.delete.color.red"
|
||||||
|
:id token-id
|
||||||
:value "red"
|
:value "red"
|
||||||
:type :color}))))
|
:type :color}))))
|
||||||
changes (-> (pcb/empty-changes)
|
changes (-> (pcb/empty-changes)
|
||||||
(pcb/with-library-data (:data file))
|
(pcb/with-library-data (:data file))
|
||||||
(pcb/set-token set-name token-name nil))
|
(pcb/set-token set-name token-id nil))
|
||||||
|
|
||||||
redo (thf/apply-changes file changes)
|
redo (thf/apply-changes file changes)
|
||||||
redo-lib (tht/get-tokens-lib redo)
|
redo-lib (tht/get-tokens-lib redo)
|
||||||
undo (thf/apply-undo-changes redo changes)
|
undo (thf/apply-undo-changes redo changes)
|
||||||
undo-lib (tht/get-tokens-lib undo)]
|
undo-lib (tht/get-tokens-lib undo)]
|
||||||
(t/is (nil? (ctob/get-token-in-set redo-lib set-name token-name)))
|
(t/is (nil? (ctob/get-token-in-set redo-lib set-name token-id)))
|
||||||
;; Undo
|
;; Undo
|
||||||
(t/is (some? (ctob/get-token-in-set undo-lib set-name token-name)))))
|
(t/is (some? (ctob/get-token-in-set undo-lib set-name token-id)))))
|
||||||
|
|
||||||
(t/testing "add token"
|
(t/testing "add token"
|
||||||
(let [set-name "foo"
|
(let [set-name "foo"
|
||||||
@@ -190,15 +192,15 @@
|
|||||||
file (setup-file #(-> % (ctob/add-set (ctob/make-token-set :name set-name))))
|
file (setup-file #(-> % (ctob/add-set (ctob/make-token-set :name set-name))))
|
||||||
changes (-> (pcb/empty-changes)
|
changes (-> (pcb/empty-changes)
|
||||||
(pcb/with-library-data (:data file))
|
(pcb/with-library-data (:data file))
|
||||||
(pcb/set-token set-name (:name token) token))
|
(pcb/set-token set-name (:id token) token))
|
||||||
|
|
||||||
redo (thf/apply-changes file changes)
|
redo (thf/apply-changes file changes)
|
||||||
redo-lib (tht/get-tokens-lib redo)
|
redo-lib (tht/get-tokens-lib redo)
|
||||||
undo (thf/apply-undo-changes redo changes)
|
undo (thf/apply-undo-changes redo changes)
|
||||||
undo-lib (tht/get-tokens-lib undo)]
|
undo-lib (tht/get-tokens-lib undo)]
|
||||||
(t/is (= token (ctob/get-token-in-set redo-lib set-name (:name token))))
|
(t/is (= token (ctob/get-token-in-set redo-lib set-name (:id token))))
|
||||||
;; Undo
|
;; Undo
|
||||||
(t/is (nil? (ctob/get-token-in-set undo-lib set-name (:name token))))))
|
(t/is (nil? (ctob/get-token-in-set undo-lib set-name (:id token))))))
|
||||||
|
|
||||||
(t/testing "update token"
|
(t/testing "update token"
|
||||||
(let [set-name "foo"
|
(let [set-name "foo"
|
||||||
@@ -213,17 +215,15 @@
|
|||||||
(ctob/add-token-in-set set-name prev-token)))
|
(ctob/add-token-in-set set-name prev-token)))
|
||||||
changes (-> (pcb/empty-changes)
|
changes (-> (pcb/empty-changes)
|
||||||
(pcb/with-library-data (:data file))
|
(pcb/with-library-data (:data file))
|
||||||
(pcb/set-token set-name (:name prev-token) token))
|
(pcb/set-token set-name (:id prev-token) token))
|
||||||
|
|
||||||
redo (thf/apply-changes file changes)
|
redo (thf/apply-changes file changes)
|
||||||
redo-lib (tht/get-tokens-lib redo)
|
redo-lib (tht/get-tokens-lib redo)
|
||||||
undo (thf/apply-undo-changes redo changes)
|
undo (thf/apply-undo-changes redo changes)
|
||||||
undo-lib (tht/get-tokens-lib undo)]
|
undo-lib (tht/get-tokens-lib undo)]
|
||||||
(t/is (tht/token-data-eq? token (ctob/get-token-in-set redo-lib set-name (:name token))))
|
(t/is (tht/token-data-eq? token (ctob/get-token-in-set redo-lib set-name (:id token))))
|
||||||
(t/is (nil? (ctob/get-token-in-set redo-lib set-name (:name prev-token))))
|
|
||||||
;; Undo
|
;; Undo
|
||||||
(t/is (tht/token-data-eq? prev-token (ctob/get-token-in-set undo-lib set-name (:name prev-token))))
|
(t/is (tht/token-data-eq? prev-token (ctob/get-token-in-set undo-lib set-name (:id prev-token)))))))
|
||||||
(t/is (nil? (ctob/get-token-in-set undo-lib set-name (:name token)))))))
|
|
||||||
|
|
||||||
(t/deftest set-token-set-test
|
(t/deftest set-token-set-test
|
||||||
(t/testing "delete token set"
|
(t/testing "delete token set"
|
||||||
@@ -276,11 +276,11 @@
|
|||||||
undo-lib (tht/get-tokens-lib undo)]
|
undo-lib (tht/get-tokens-lib undo)]
|
||||||
|
|
||||||
;; Undo
|
;; Undo
|
||||||
(t/is (some? (ctob/get-token-in-set undo-lib set-name token-name)))
|
(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 token-name)))
|
(t/is (nil? (ctob/get-token-in-set undo-lib new-set-name (:id token))))
|
||||||
;; Redo
|
;; Redo
|
||||||
(t/is (nil? (ctob/get-token-in-set redo-lib set-name token-name)))
|
(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 token-name))))))
|
(t/is (some? (ctob/get-token-in-set redo-lib new-set-name (:id token)))))))
|
||||||
|
|
||||||
(t/deftest generate-toggle-token-set-group-test
|
(t/deftest generate-toggle-token-set-group-test
|
||||||
(t/testing "toggling set group with no active sets inside will activate all child sets"
|
(t/testing "toggling set group with no active sets inside will activate all child sets"
|
||||||
|
|||||||
@@ -9,12 +9,13 @@
|
|||||||
#?(:clj [app.common.fressian :as fres])
|
#?(:clj [app.common.fressian :as fres])
|
||||||
#?(:clj [app.common.json :as json])
|
#?(:clj [app.common.json :as json])
|
||||||
#?(:clj [app.common.test-helpers.tokens :as tht])
|
#?(:clj [app.common.test-helpers.tokens :as tht])
|
||||||
#?(:clj [app.common.uuid :as uuid])
|
#?(:clj [clojure.datafy :refer [datafy]])
|
||||||
[app.common.data :as d]
|
[app.common.data :as d]
|
||||||
|
[app.common.test-helpers.ids-map :as thi]
|
||||||
[app.common.time :as dt]
|
[app.common.time :as dt]
|
||||||
[app.common.transit :as tr]
|
[app.common.transit :as tr]
|
||||||
[app.common.types.tokens-lib :as ctob]
|
[app.common.types.tokens-lib :as ctob]
|
||||||
[clojure.datafy :refer [datafy]]
|
[app.common.uuid :as uuid]
|
||||||
[clojure.test :as t]))
|
[clojure.test :as t]))
|
||||||
|
|
||||||
(defn setup-virtual-time
|
(defn setup-virtual-time
|
||||||
@@ -26,16 +27,19 @@
|
|||||||
(t/use-fixtures :once setup-virtual-time)
|
(t/use-fixtures :once setup-virtual-time)
|
||||||
|
|
||||||
(t/deftest make-token
|
(t/deftest make-token
|
||||||
(let [now (dt/now)
|
(let [now (dt/now)
|
||||||
token1 (ctob/make-token :name "test-token-1"
|
token1 (ctob/make-token :id (thi/new-id! :token1)
|
||||||
:type :boolean
|
:name "test-token-1"
|
||||||
:value true)
|
:type :boolean
|
||||||
token2 (ctob/make-token :name "test-token-2"
|
:value true)
|
||||||
:type :number
|
token2 (ctob/make-token :id (thi/new-id! :token2)
|
||||||
:value 66
|
:name "test-token-2"
|
||||||
:description "test description"
|
:type :number
|
||||||
:modified-at now)]
|
:value 66
|
||||||
|
:description "test description"
|
||||||
|
:modified-at now)]
|
||||||
|
|
||||||
|
(t/is (= (:id token1) (thi/id :token1)))
|
||||||
(t/is (= (:name token1) "test-token-1"))
|
(t/is (= (:name token1) "test-token-1"))
|
||||||
(t/is (= (:type token1) :boolean))
|
(t/is (= (:type token1) :boolean))
|
||||||
(t/is (= (:value token1) true))
|
(t/is (= (:value token1) true))
|
||||||
@@ -43,6 +47,7 @@
|
|||||||
(t/is (some? (:modified-at token1)))
|
(t/is (some? (:modified-at token1)))
|
||||||
(t/is (ctob/check-token token1))
|
(t/is (ctob/check-token token1))
|
||||||
|
|
||||||
|
(t/is (= (:id token2) (thi/id :token2)))
|
||||||
(t/is (= (:name token2) "test-token-2"))
|
(t/is (= (:name token2) "test-token-2"))
|
||||||
(t/is (= (:type token2) :number))
|
(t/is (= (:type token2) :number))
|
||||||
(t/is (= (:value token2) 66))
|
(t/is (= (:value token2) 66))
|
||||||
@@ -317,11 +322,12 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"
|
||||||
:tokens {"test-token"
|
:tokens {"test-token"
|
||||||
(ctob/make-token :name "test-token"
|
(ctob/make-token :id (thi/new-id! :test-token)
|
||||||
|
:name "test-token"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)})))
|
:value true)})))
|
||||||
token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
|
token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
|
||||||
token (ctob/get-token token-set-copy "test-token")]
|
token (ctob/get-token token-set-copy (thi/id :test-token))]
|
||||||
|
|
||||||
(t/is (some? token-set-copy))
|
(t/is (some? token-set-copy))
|
||||||
(t/is (= (ctob/get-name token-set-copy) "test-token-set-copy"))
|
(t/is (= (ctob/get-name token-set-copy) "test-token-set-copy"))
|
||||||
@@ -332,14 +338,15 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"
|
||||||
:tokens {"test-token"
|
:tokens {"test-token"
|
||||||
(ctob/make-token :name "test-token"
|
(ctob/make-token :id (thi/new-id! :test-token)
|
||||||
|
:name "test-token"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)})))
|
: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 "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 "test-token-set" tokens-lib {:suffix "copy"})
|
||||||
token (ctob/get-token token-set-copy "test-token")]
|
token (ctob/get-token token-set-copy (thi/id :test-token))]
|
||||||
|
|
||||||
(t/is (some? token-set-copy))
|
(t/is (some? token-set-copy))
|
||||||
(t/is (= (ctob/get-name token-set-copy) "test-token-set-copy-2"))
|
(t/is (= (ctob/get-name token-set-copy) "test-token-set-copy-2"))
|
||||||
@@ -381,7 +388,8 @@
|
|||||||
(t/deftest add-token
|
(t/deftest add-token
|
||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set")))
|
||||||
token (ctob/make-token :name "test-token"
|
token (ctob/make-token :id (thi/new-id! :token)
|
||||||
|
:name "test-token"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)
|
:value true)
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
@@ -390,7 +398,7 @@
|
|||||||
|
|
||||||
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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token' (ctob/get-token token-set' "test-token")]
|
token' (ctob/get-token token-set' (thi/id :token))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (count (ctob/get-tokens-map token-set')) 1))
|
(t/is (= (count (ctob/get-tokens-map token-set')) 1))
|
||||||
@@ -401,33 +409,35 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-1"
|
(ctob/make-token :id (thi/new-id! :test-token-1)
|
||||||
|
:name "test-token-1"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-2"
|
(ctob/make-token :id (thi/new-id! :test-token-2)
|
||||||
|
:name "test-token-2"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)))
|
:value true)))
|
||||||
|
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
(ctob/update-token-in-set "test-token-set" "test-token-1"
|
(ctob/update-token-in-set "test-token-set" (thi/id :test-token-1)
|
||||||
(fn [token]
|
(fn [token]
|
||||||
(assoc token
|
(assoc token
|
||||||
:description "some description"
|
:description "some description"
|
||||||
:value false)))
|
:value false)))
|
||||||
(ctob/update-token-in-set "not-existing-set" "test-token-1"
|
(ctob/update-token-in-set "not-existing-set" (thi/id :test-token-1)
|
||||||
(fn [token]
|
(fn [token]
|
||||||
(assoc token
|
(assoc token
|
||||||
:name "no-effect")))
|
:name "no-effect")))
|
||||||
(ctob/update-token-in-set "test-token-set" "not-existing-token"
|
(ctob/update-token-in-set "test-token-set" (uuid/next)
|
||||||
(fn [token]
|
(fn [token]
|
||||||
(assoc token
|
(assoc token
|
||||||
:name "no-effect"))))
|
: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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token (ctob/get-token token-set "test-token-1")
|
token (ctob/get-token token-set (thi/id :test-token-1))
|
||||||
token' (ctob/get-token token-set' "test-token-1")]
|
token' (ctob/get-token token-set' (thi/id :test-token-1))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (count (ctob/get-tokens-map token-set')) 2))
|
(t/is (= (count (ctob/get-tokens-map token-set')) 2))
|
||||||
@@ -442,24 +452,26 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-1"
|
(ctob/make-token :id (thi/new-id! :test-token-1)
|
||||||
|
:name "test-token-1"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-2"
|
(ctob/make-token :id (thi/new-id! :test-token-2)
|
||||||
|
:name "test-token-2"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)))
|
:value true)))
|
||||||
|
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
(ctob/update-token-in-set "test-token-set" "test-token-1"
|
(ctob/update-token-in-set "test-token-set" (thi/id :test-token-1)
|
||||||
(fn [token]
|
(fn [token]
|
||||||
(assoc token
|
(assoc token
|
||||||
:name "updated-name"))))
|
: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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token (ctob/get-token token-set "test-token-1")
|
token (ctob/get-token token-set (thi/id :test-token-1))
|
||||||
token' (ctob/get-token token-set' "updated-name")]
|
token' (ctob/get-token token-set' (thi/id :test-token-1))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (count (ctob/get-tokens-map token-set')) 2))
|
(t/is (= (count (ctob/get-tokens-map token-set')) 2))
|
||||||
@@ -474,17 +486,18 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token"
|
(ctob/make-token :id (thi/new-id! :test-token)
|
||||||
|
:name "test-token"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)))
|
:value true)))
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
(ctob/delete-token-from-set "test-token-set" "test-token")
|
(ctob/delete-token-from-set "test-token-set" (thi/id :test-token))
|
||||||
(ctob/delete-token-from-set "not-existing-set" "test-token")
|
(ctob/delete-token-from-set "not-existing-set" (thi/id :test-token))
|
||||||
(ctob/delete-token-from-set "test-set" "not-existing-token"))
|
(ctob/delete-token-from-set "test-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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token' (ctob/get-token token-set' "test-token")]
|
token' (ctob/get-token token-set' (thi/id :test-token))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (count (ctob/get-tokens-map token-set')) 0))
|
(t/is (= (count (ctob/get-tokens-map token-set')) 0))
|
||||||
@@ -908,20 +921,23 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-1"
|
(ctob/make-token :id (thi/new-id! :test-token-1)
|
||||||
|
:name "test-token-1"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "group1.test-token-2"
|
(ctob/make-token :id (thi/new-id! :test-token-2)
|
||||||
|
:name "group1.test-token-2"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "group1.test-token-3"
|
(ctob/make-token :id (thi/new-id! :test-token-3)
|
||||||
|
:name "group1.test-token-3"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)))
|
:value true)))
|
||||||
|
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
(ctob/update-token-in-set "test-token-set" "group1.test-token-2"
|
(ctob/update-token-in-set "test-token-set" (thi/id :test-token-2)
|
||||||
(fn [token]
|
(fn [token]
|
||||||
(assoc token
|
(assoc token
|
||||||
:description "some description"
|
:description "some description"
|
||||||
@@ -929,8 +945,8 @@
|
|||||||
|
|
||||||
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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token (ctob/get-token token-set "group1.test-token-2")
|
token (ctob/get-token token-set (thi/id :test-token-2))
|
||||||
token' (ctob/get-token token-set' "group1.test-token-2")]
|
token' (ctob/get-token token-set' (thi/id :test-token-2))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (:name token') "group1.test-token-2"))
|
(t/is (= (:name token') "group1.test-token-2"))
|
||||||
@@ -943,28 +959,31 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-1"
|
(ctob/make-token :id (thi/new-id! :test-token-1)
|
||||||
|
:name "test-token-1"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "group1.test-token-2"
|
(ctob/make-token :id (thi/new-id! :test-token-2)
|
||||||
|
:name "group1.test-token-2"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "group1.test-token-3"
|
(ctob/make-token :id (thi/new-id! :test-token-3)
|
||||||
|
:name "group1.test-token-3"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)))
|
:value true)))
|
||||||
|
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
(ctob/update-token-in-set "test-token-set" "group1.test-token-2"
|
(ctob/update-token-in-set "test-token-set" (thi/id :test-token-2)
|
||||||
(fn [token]
|
(fn [token]
|
||||||
(assoc token
|
(assoc token
|
||||||
:name "group1.updated-name"))))
|
: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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token (ctob/get-token token-set "group1.test-token-2")
|
token (ctob/get-token token-set (thi/id :test-token-2))
|
||||||
token' (ctob/get-token token-set' "group1.updated-name")]
|
token' (ctob/get-token token-set' (thi/id :test-token-2))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (:name token') "group1.updated-name"))
|
(t/is (= (:name token') "group1.updated-name"))
|
||||||
@@ -977,28 +996,31 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-1"
|
(ctob/make-token :id (thi/new-id! :test-token-1)
|
||||||
|
:name "test-token-1"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "group1.test-token-2"
|
(ctob/make-token :id (thi/new-id! :test-token-2)
|
||||||
|
:name "group1.test-token-2"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "group1.test-token-3"
|
(ctob/make-token :id (thi/new-id! :test-token-3)
|
||||||
|
:name "group1.test-token-3"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)))
|
:value true)))
|
||||||
|
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
(ctob/update-token-in-set "test-token-set" "group1.test-token-2"
|
(ctob/update-token-in-set "test-token-set" (thi/id :test-token-2)
|
||||||
(fn [token]
|
(fn [token]
|
||||||
(assoc token
|
(assoc token
|
||||||
:name "group2.updated-name"))))
|
: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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token (ctob/get-token token-set "group1.test-token-2")
|
token (ctob/get-token token-set (thi/id :test-token-2))
|
||||||
token' (ctob/get-token token-set' "group2.updated-name")]
|
token' (ctob/get-token token-set' (thi/id :test-token-2))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (d/index-of (keys (ctob/get-tokens-map token-set')) "group2.updated-name") 1))
|
(t/is (= (d/index-of (keys (ctob/get-tokens-map token-set')) "group2.updated-name") 1))
|
||||||
@@ -1012,19 +1034,21 @@
|
|||||||
(let [tokens-lib (-> (ctob/make-tokens-lib)
|
(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 :name "test-token-set"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-1"
|
(ctob/make-token :id (thi/new-id! :test-token-1)
|
||||||
|
:name "test-token-1"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true))
|
:value true))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "group1.test-token-2"
|
(ctob/make-token :id (thi/new-id! :test-token-2)
|
||||||
|
:name "group1.test-token-2"
|
||||||
:type :boolean
|
:type :boolean
|
||||||
:value true)))
|
:value true)))
|
||||||
tokens-lib' (-> tokens-lib
|
tokens-lib' (-> tokens-lib
|
||||||
(ctob/delete-token-from-set "test-token-set" "group1.test-token-2"))
|
(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' "test-token-set")
|
token-set' (ctob/get-set tokens-lib' "test-token-set")
|
||||||
token' (ctob/get-token token-set' "group1.test-token-2")]
|
token' (ctob/get-token token-set' (thi/id :test-token-2))]
|
||||||
|
|
||||||
(t/is (= (ctob/set-count tokens-lib') 1))
|
(t/is (= (ctob/set-count tokens-lib') 1))
|
||||||
(t/is (= (count (ctob/get-tokens-map token-set')) 1))
|
(t/is (= (count (ctob/get-tokens-map token-set')) 1))
|
||||||
@@ -1241,7 +1265,7 @@
|
|||||||
lib (ctob/parse-decoded-json json "single_set")]
|
lib (ctob/parse-decoded-json json "single_set")]
|
||||||
(t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
|
(t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
|
||||||
(t/testing "token added"
|
(t/testing "token added"
|
||||||
(t/is (some? (ctob/get-token-in-set lib "single_set" "color.red.100")))))))
|
(t/is (some? (ctob/get-token-by-name lib "single_set" "color.red.100")))))))
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(t/deftest parse-single-set-dtcg-json
|
(t/deftest parse-single-set-dtcg-json
|
||||||
@@ -1250,7 +1274,7 @@
|
|||||||
lib (ctob/parse-decoded-json json "single_set")]
|
lib (ctob/parse-decoded-json json "single_set")]
|
||||||
(t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
|
(t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
|
||||||
(t/testing "token added"
|
(t/testing "token added"
|
||||||
(t/is (some? (ctob/get-token-in-set lib "single_set" "color.red.100")))))))
|
(t/is (some? (ctob/get-token-by-name lib "single_set" "color.red.100")))))))
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(t/deftest parse-multi-set-legacy-json
|
(t/deftest parse-multi-set-legacy-json
|
||||||
@@ -1264,23 +1288,23 @@
|
|||||||
(t/is (= (:name token-theme) "theme-1"))
|
(t/is (= (:name token-theme) "theme-1"))
|
||||||
(t/is (= (:sets token-theme) #{"light"})))
|
(t/is (= (:sets token-theme) #{"light"})))
|
||||||
(t/testing "tokens exist in core set"
|
(t/testing "tokens exist in core set"
|
||||||
(t/is (tht/token-data-eq? (ctob/get-token-in-set lib "core" "colors.red.600")
|
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "colors.red.600")
|
||||||
{:name "colors.red.600"
|
{:name "colors.red.600"
|
||||||
:type :color
|
:type :color
|
||||||
:value "#e53e3e"
|
:value "#e53e3e"
|
||||||
:description ""}))
|
:description ""}))
|
||||||
(t/is (tht/token-data-eq? (ctob/get-token-in-set lib "core" "spacing.multi-value")
|
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "spacing.multi-value")
|
||||||
{:name "spacing.multi-value"
|
{:name "spacing.multi-value"
|
||||||
:type :spacing
|
:type :spacing
|
||||||
:value "{dimension.sm} {dimension.xl}"
|
:value "{dimension.sm} {dimension.xl}"
|
||||||
:description "You can have multiple values in a single spacing token"}))
|
:description "You can have multiple values in a single spacing token"}))
|
||||||
(t/is (tht/token-data-eq? (ctob/get-token-in-set lib "theme" "button.primary.background")
|
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "theme" "button.primary.background")
|
||||||
{:name "button.primary.background"
|
{:name "button.primary.background"
|
||||||
:type :color
|
:type :color
|
||||||
:value "{accent.default}"
|
:value "{accent.default}"
|
||||||
:description ""})))
|
:description ""})))
|
||||||
(t/testing "invalid tokens got discarded"
|
(t/testing "invalid tokens got discarded"
|
||||||
(t/is (nil? (ctob/get-token-in-set lib "typography" "H1.Bold")))))))
|
(t/is (nil? (ctob/get-token-by-name lib "typography" "H1.Bold")))))))
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(t/deftest parse-multi-set-dtcg-json
|
(t/deftest parse-multi-set-dtcg-json
|
||||||
@@ -1294,23 +1318,23 @@
|
|||||||
(t/is (= (:name token-theme) "theme-1"))
|
(t/is (= (:name token-theme) "theme-1"))
|
||||||
(t/is (= (:sets token-theme) #{"light"})))
|
(t/is (= (:sets token-theme) #{"light"})))
|
||||||
(t/testing "tokens exist in core set"
|
(t/testing "tokens exist in core set"
|
||||||
(t/is (tht/token-data-eq? (ctob/get-token-in-set lib "core" "colors.red.600")
|
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "colors.red.600")
|
||||||
{:name "colors.red.600"
|
{:name "colors.red.600"
|
||||||
:type :color
|
:type :color
|
||||||
:value "#e53e3e"
|
:value "#e53e3e"
|
||||||
:description ""}))
|
:description ""}))
|
||||||
(t/is (tht/token-data-eq? (ctob/get-token-in-set lib "core" "spacing.multi-value")
|
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "core" "spacing.multi-value")
|
||||||
{:name "spacing.multi-value"
|
{:name "spacing.multi-value"
|
||||||
:type :spacing
|
:type :spacing
|
||||||
:value "{dimension.sm} {dimension.xl}"
|
:value "{dimension.sm} {dimension.xl}"
|
||||||
:description "You can have multiple values in a single spacing token"}))
|
:description "You can have multiple values in a single spacing token"}))
|
||||||
(t/is (tht/token-data-eq? (ctob/get-token-in-set lib "theme" "button.primary.background")
|
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "theme" "button.primary.background")
|
||||||
{:name "button.primary.background"
|
{:name "button.primary.background"
|
||||||
:type :color
|
:type :color
|
||||||
:value "{accent.default}"
|
:value "{accent.default}"
|
||||||
:description ""})))
|
:description ""})))
|
||||||
(t/testing "invalid tokens got discarded"
|
(t/testing "invalid tokens got discarded"
|
||||||
(t/is (nil? (ctob/get-token-in-set lib "typography" "H1.Bold")))))))
|
(t/is (nil? (ctob/get-token-by-name lib "typography" "H1.Bold")))))))
|
||||||
|
|
||||||
#?(:clj
|
#?(:clj
|
||||||
(t/deftest parse-multi-set-dtcg-json-default-team
|
(t/deftest parse-multi-set-dtcg-json-default-team
|
||||||
@@ -1325,7 +1349,7 @@
|
|||||||
(t/is (= (:group first-theme) ""))
|
(t/is (= (:group first-theme) ""))
|
||||||
(t/is (= (:name first-theme) ctob/hidden-theme-name)))
|
(t/is (= (:name first-theme) ctob/hidden-theme-name)))
|
||||||
(t/testing "token exist in dark set"
|
(t/testing "token exist in dark set"
|
||||||
(t/is (tht/token-data-eq? (ctob/get-token-in-set lib "dark" "small")
|
(t/is (tht/token-data-eq? (ctob/get-token-by-name lib "dark" "small")
|
||||||
{:name "small"
|
{:name "small"
|
||||||
:value "8"
|
:value "8"
|
||||||
:type :border-radius
|
:type :border-radius
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
[app.common.logic.tokens :as clt]
|
[app.common.logic.tokens :as clt]
|
||||||
[app.common.types.shape :as cts]
|
[app.common.types.shape :as cts]
|
||||||
[app.common.types.tokens-lib :as ctob]
|
[app.common.types.tokens-lib :as ctob]
|
||||||
|
[app.common.uuid :as uuid]
|
||||||
[app.main.data.changes :as dch]
|
[app.main.data.changes :as dch]
|
||||||
[app.main.data.event :as ev]
|
[app.main.data.event :as ev]
|
||||||
[app.main.data.helpers :as dsh]
|
[app.main.data.helpers :as dsh]
|
||||||
@@ -347,24 +348,25 @@
|
|||||||
changes (-> (pcb/empty-changes it)
|
changes (-> (pcb/empty-changes it)
|
||||||
(pcb/with-library-data data)
|
(pcb/with-library-data data)
|
||||||
(pcb/set-token (ctob/get-name token-set)
|
(pcb/set-token (ctob/get-name token-set)
|
||||||
(:name token)
|
(:id token)
|
||||||
token))]
|
token))]
|
||||||
|
|
||||||
|
(js/console.log "Creating token" (clj->js changes))
|
||||||
(rx/of (dch/commit-changes changes)
|
(rx/of (dch/commit-changes changes)
|
||||||
(ptk/data-event ::ev/event {::ev/name "create-token" :type token-type})))
|
(ptk/data-event ::ev/event {::ev/name "create-token" :type token-type})))
|
||||||
|
|
||||||
(rx/of (create-token-with-set token)))))))
|
(rx/of (create-token-with-set token)))))))
|
||||||
|
|
||||||
(defn update-token
|
(defn update-token
|
||||||
[name params]
|
[id params]
|
||||||
(assert (string? name) "expected string for `name`")
|
(assert (uuid? id) "expected uuid for `id`")
|
||||||
|
|
||||||
(ptk/reify ::update-token
|
(ptk/reify ::update-token
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [it state _]
|
(watch [it state _]
|
||||||
(let [token-set (lookup-token-set state)
|
(let [token-set (lookup-token-set state)
|
||||||
data (dsh/lookup-file-data state)
|
data (dsh/lookup-file-data state)
|
||||||
token (ctob/get-token token-set name)
|
token (ctob/get-token token-set id)
|
||||||
token' (->> (merge token params)
|
token' (->> (merge token params)
|
||||||
(into {})
|
(into {})
|
||||||
(ctob/make-token))
|
(ctob/make-token))
|
||||||
@@ -372,39 +374,41 @@
|
|||||||
changes (-> (pcb/empty-changes it)
|
changes (-> (pcb/empty-changes it)
|
||||||
(pcb/with-library-data data)
|
(pcb/with-library-data data)
|
||||||
(pcb/set-token (ctob/get-name token-set)
|
(pcb/set-token (ctob/get-name token-set)
|
||||||
(:name token)
|
id
|
||||||
token'))]
|
token'))]
|
||||||
|
|
||||||
(rx/of (dch/commit-changes changes)
|
(rx/of (dch/commit-changes changes)
|
||||||
(ptk/data-event ::ev/event {::ev/name "edit-token" :type token-type}))))))
|
(ptk/data-event ::ev/event {::ev/name "edit-token" :type token-type}))))))
|
||||||
|
|
||||||
(defn delete-token
|
(defn delete-token
|
||||||
[set-name token-name]
|
[set-name token-id]
|
||||||
(dm/assert! (string? set-name))
|
(dm/assert! (string? set-name))
|
||||||
(dm/assert! (string? token-name))
|
(dm/assert! (uuid? token-id))
|
||||||
(ptk/reify ::delete-token
|
(ptk/reify ::delete-token
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [it state _]
|
(watch [it state _]
|
||||||
(let [data (dsh/lookup-file-data state)
|
(let [data (dsh/lookup-file-data state)
|
||||||
changes (-> (pcb/empty-changes it)
|
changes (-> (pcb/empty-changes it)
|
||||||
(pcb/with-library-data data)
|
(pcb/with-library-data data)
|
||||||
(pcb/set-token set-name token-name nil))]
|
(pcb/set-token set-name token-id nil))]
|
||||||
(rx/of (dch/commit-changes changes))))))
|
(rx/of (dch/commit-changes changes))))))
|
||||||
|
|
||||||
(defn duplicate-token
|
(defn duplicate-token
|
||||||
[token-name]
|
[token-id]
|
||||||
(dm/assert! (string? token-name))
|
(dm/assert! (uuid? token-id))
|
||||||
(ptk/reify ::duplicate-token
|
(ptk/reify ::duplicate-token
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
(watch [_ state _]
|
(watch [_ state _]
|
||||||
(when-let [token-set (lookup-token-set state)]
|
(when-let [token-set (lookup-token-set state)]
|
||||||
(when-let [token (ctob/get-token token-set token-name)]
|
(when-let [token (ctob/get-token token-set token-id)]
|
||||||
(let [tokens (ctob/get-tokens token-set)
|
(let [tokens (ctob/get-tokens token-set)
|
||||||
unames (map :name tokens)
|
unames (map :name tokens)
|
||||||
suffix (tr "workspace.tokens.duplicate-suffix")
|
suffix (tr "workspace.tokens.duplicate-suffix")
|
||||||
copy-name (cfh/generate-unique-name token-name unames :suffix suffix)]
|
copy-name (cfh/generate-unique-name (:name token) unames :suffix suffix)]
|
||||||
|
|
||||||
(rx/of (create-token (assoc token :name copy-name)))))))))
|
(rx/of (create-token (assoc token
|
||||||
|
:id (uuid/next)
|
||||||
|
:name copy-name)))))))))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; TOKEN UI OPS
|
;; TOKEN UI OPS
|
||||||
|
|||||||
@@ -25,9 +25,9 @@
|
|||||||
(get :tokens-lib)
|
(get :tokens-lib)
|
||||||
(ctob/get-set set-name))))
|
(ctob/get-set set-name))))
|
||||||
|
|
||||||
(defn get-token-in-selected-set [state token-name]
|
(defn get-token-in-selected-set [state token-id]
|
||||||
(some-> (get-selected-token-set state)
|
(some-> (get-selected-token-set state)
|
||||||
(ctob/get-token token-name)))
|
(ctob/get-token token-id)))
|
||||||
|
|
||||||
(defn get-all-tokens-in-selected-set [state]
|
(defn get-all-tokens-in-selected-set [state]
|
||||||
(some-> (get-selected-token-set state)
|
(some-> (get-selected-token-set state)
|
||||||
|
|||||||
@@ -505,9 +505,9 @@
|
|||||||
(l/derived #(or (some-> % ctob/get-tokens-in-active-sets) {}) tokens-lib))
|
(l/derived #(or (some-> % ctob/get-tokens-in-active-sets) {}) tokens-lib))
|
||||||
|
|
||||||
(def workspace-token-in-selected-set
|
(def workspace-token-in-selected-set
|
||||||
(fn [token-name]
|
(fn [token-id]
|
||||||
(l/derived
|
(l/derived
|
||||||
#(dwts/get-token-in-selected-set % token-name)
|
#(dwts/get-token-in-selected-set % token-id)
|
||||||
st/state)))
|
st/state)))
|
||||||
|
|
||||||
(def workspace-all-tokens-in-selected-set
|
(def workspace-all-tokens-in-selected-set
|
||||||
|
|||||||
@@ -322,12 +322,12 @@
|
|||||||
:token token}))))}
|
:token token}))))}
|
||||||
{:title (tr "workspace.tokens.duplicate")
|
{:title (tr "workspace.tokens.duplicate")
|
||||||
:no-selectable true
|
:no-selectable true
|
||||||
:action #(st/emit! (dwtl/duplicate-token (:name token)))}
|
:action #(st/emit! (dwtl/duplicate-token (:id token)))}
|
||||||
{:title (tr "workspace.tokens.delete")
|
{:title (tr "workspace.tokens.delete")
|
||||||
:no-selectable true
|
:no-selectable true
|
||||||
:action #(st/emit! (dwtl/delete-token
|
:action #(st/emit! (dwtl/delete-token
|
||||||
(ctob/prefixed-set-path-string->set-name-string selected-token-set-name)
|
(ctob/prefixed-set-path-string->set-name-string selected-token-set-name)
|
||||||
(:name token)))}]))
|
(:id token)))}]))
|
||||||
|
|
||||||
(defn- allowed-shape-attributes [shapes]
|
(defn- allowed-shape-attributes [shapes]
|
||||||
(reduce into #{} (map #(ctt/shape-type->attributes (:type %)) shapes)))
|
(reduce into #{} (map #(ctt/shape-type->attributes (:type %)) shapes)))
|
||||||
@@ -456,8 +456,8 @@
|
|||||||
(let [objects (mf/deref refs/workspace-page-objects)
|
(let [objects (mf/deref refs/workspace-page-objects)
|
||||||
selected (mf/deref refs/selected-shapes)
|
selected (mf/deref refs/selected-shapes)
|
||||||
|
|
||||||
token-name (:token-name mdata)
|
token-id (:token-id mdata)
|
||||||
token (mf/deref (refs/workspace-token-in-selected-set token-name))
|
token (mf/deref (refs/workspace-token-in-selected-set token-id))
|
||||||
token-type (:type token)
|
token-type (:type token)
|
||||||
selected-token-set-name (mf/deref refs/selected-token-set-name)
|
selected-token-set-name (mf/deref refs/selected-token-set-name)
|
||||||
|
|
||||||
|
|||||||
@@ -390,7 +390,7 @@
|
|||||||
(fn []
|
(fn []
|
||||||
(st/emit!
|
(st/emit!
|
||||||
(if (ctob/token? token)
|
(if (ctob/token? token)
|
||||||
(dwtl/update-token (:name token)
|
(dwtl/update-token (:id token)
|
||||||
{:name final-name
|
{:name final-name
|
||||||
:value final-value
|
:value final-value
|
||||||
:description final-description})
|
:description final-description})
|
||||||
@@ -408,7 +408,9 @@
|
|||||||
(fn [e]
|
(fn [e]
|
||||||
(dom/prevent-default e)
|
(dom/prevent-default e)
|
||||||
(modal/hide!)
|
(modal/hide!)
|
||||||
(st/emit! (dwtl/delete-token (ctob/prefixed-set-path-string->set-name-string selected-token-set-name) (:name token)))))
|
(st/emit! (dwtl/delete-token
|
||||||
|
(ctob/prefixed-set-path-string->set-name-string selected-token-set-name)
|
||||||
|
(:id token)))))
|
||||||
|
|
||||||
on-cancel
|
on-cancel
|
||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
@@ -422,12 +424,14 @@
|
|||||||
(fn [e]
|
(fn [e]
|
||||||
(when (k/enter? e)
|
(when (k/enter? e)
|
||||||
(on-delete-token e))))
|
(on-delete-token e))))
|
||||||
|
|
||||||
handle-key-down-cancel
|
handle-key-down-cancel
|
||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
(mf/deps on-cancel)
|
(mf/deps on-cancel)
|
||||||
(fn [e]
|
(fn [e]
|
||||||
(when (k/enter? e)
|
(when (k/enter? e)
|
||||||
(on-cancel e))))
|
(on-cancel e))))
|
||||||
|
|
||||||
handle-key-down-save
|
handle-key-down-save
|
||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
(fn [e]
|
(fn [e]
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
{:type :token
|
{:type :token
|
||||||
:position (dom/get-client-position event)
|
:position (dom/get-client-position event)
|
||||||
:errors (:errors token)
|
:errors (:errors token)
|
||||||
:token-name (:name token)}))))
|
:token-id (:id token)}))))
|
||||||
|
|
||||||
on-toggle-open-click
|
on-toggle-open-click
|
||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
|
|||||||
@@ -39,15 +39,18 @@
|
|||||||
:sets #{"test-token-set"}))
|
:sets #{"test-token-set"}))
|
||||||
(ctob/set-active-themes #{"/test-theme"})
|
(ctob/set-active-themes #{"/test-theme"})
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-1"
|
(ctob/make-token :id (cthi/new-id! :test-token-1)
|
||||||
|
:name "test-token-1"
|
||||||
:type :border-radius
|
:type :border-radius
|
||||||
:value 25))
|
:value 25))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-2"
|
(ctob/make-token :id (cthi/new-id! :test-token-2)
|
||||||
|
:name "test-token-2"
|
||||||
:type :border-radius
|
:type :border-radius
|
||||||
:value 50))
|
:value 50))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "test-token-3"
|
(ctob/make-token :id (cthi/new-id! :test-token-3)
|
||||||
|
:name "test-token-3"
|
||||||
:type :border-radius
|
:type :border-radius
|
||||||
:value 75))))
|
:value 75))))
|
||||||
(ctho/add-frame :frame1)
|
(ctho/add-frame :frame1)
|
||||||
@@ -202,9 +205,9 @@
|
|||||||
file (setup-file-with-copy)
|
file (setup-file-with-copy)
|
||||||
store (ths/setup-store file)
|
store (ths/setup-store file)
|
||||||
|
|
||||||
;; ==== Action
|
;; ==== Action
|
||||||
events [(dwtl/set-selected-token-set-name "test-token-set")
|
events [(dwtl/set-selected-token-set-name "test-token-set")
|
||||||
(dwtl/update-token "test-token-1"
|
(dwtl/update-token (cthi/id :test-token-1)
|
||||||
{:name "test-token-1"
|
{:name "test-token-1"
|
||||||
:type :border-radius
|
:type :border-radius
|
||||||
:value 66})]
|
:value 66})]
|
||||||
@@ -323,27 +326,33 @@
|
|||||||
:sets #{"test-token-set"}))
|
:sets #{"test-token-set"}))
|
||||||
(ctob/set-active-themes #{"/test-theme"})
|
(ctob/set-active-themes #{"/test-theme"})
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-radius"
|
(ctob/make-token :id (cthi/new-id! :token-radius)
|
||||||
|
:name "token-radius"
|
||||||
:type :border-radius
|
:type :border-radius
|
||||||
:value 10))
|
:value 10))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-rotation"
|
(ctob/make-token :id (cthi/new-id! :token-rotation)
|
||||||
|
:name "token-rotation"
|
||||||
:type :rotation
|
:type :rotation
|
||||||
:value 30))
|
:value 30))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-opacity"
|
(ctob/make-token :id (cthi/new-id! :token-opacity)
|
||||||
|
:name "token-opacity"
|
||||||
:type :opacity
|
:type :opacity
|
||||||
:value 0.7))
|
:value 0.7))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-stroke-width"
|
(ctob/make-token :id (cthi/new-id! :token-stroke-width)
|
||||||
|
:name "token-stroke-width"
|
||||||
:type :stroke-width
|
:type :stroke-width
|
||||||
:value 2))
|
:value 2))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-color"
|
(ctob/make-token :id (cthi/new-id! :token-color)
|
||||||
|
:name "token-color"
|
||||||
:type :color
|
:type :color
|
||||||
:value "#00ff00"))
|
:value "#00ff00"))
|
||||||
(ctob/add-token-in-set "test-token-set"
|
(ctob/add-token-in-set "test-token-set"
|
||||||
(ctob/make-token :name "token-dimensions"
|
(ctob/make-token :id (cthi/new-id! :token-dimensions)
|
||||||
|
:name "token-dimensions"
|
||||||
:type :dimensions
|
:type :dimensions
|
||||||
:value 100))))
|
:value 100))))
|
||||||
(ctho/add-frame :frame1)
|
(ctho/add-frame :frame1)
|
||||||
@@ -360,22 +369,22 @@
|
|||||||
|
|
||||||
;; ==== Action
|
;; ==== Action
|
||||||
events [(dwtl/set-selected-token-set-name "test-token-set")
|
events [(dwtl/set-selected-token-set-name "test-token-set")
|
||||||
(dwtl/update-token "token-radius"
|
(dwtl/update-token (cthi/id :token-radius)
|
||||||
{:name "token-radius"
|
{:name "token-radius"
|
||||||
:value 30})
|
:value 30})
|
||||||
(dwtl/update-token "token-rotation"
|
(dwtl/update-token (cthi/id :token-rotation)
|
||||||
{:name "token-rotation"
|
{:name "token-rotation"
|
||||||
:value 45})
|
:value 45})
|
||||||
(dwtl/update-token "token-opacity"
|
(dwtl/update-token (cthi/id :token-opacity)
|
||||||
{:name "token-opacity"
|
{:name "token-opacity"
|
||||||
:value 0.9})
|
:value 0.9})
|
||||||
(dwtl/update-token "token-stroke-width"
|
(dwtl/update-token (cthi/id :token-stroke-width)
|
||||||
{:name "token-stroke-width"
|
{:name "token-stroke-width"
|
||||||
:value 8})
|
:value 8})
|
||||||
(dwtl/update-token "token-color"
|
(dwtl/update-token (cthi/id :token-color)
|
||||||
{:name "token-color"
|
{:name "token-color"
|
||||||
:value "#ff0000"})
|
:value "#ff0000"})
|
||||||
(dwtl/update-token "token-dimensions"
|
(dwtl/update-token (cthi/id :token-dimensions)
|
||||||
{:name "token-dimensions"
|
{:name "token-dimensions"
|
||||||
:value 200})]
|
:value 200})]
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
(rx/subs! (fn [tokens-lib]
|
(rx/subs! (fn [tokens-lib]
|
||||||
(t/is (instance? ctob/TokensLib tokens-lib))
|
(t/is (instance? ctob/TokensLib tokens-lib))
|
||||||
(t/is (= "red" (-> (ctob/get-set tokens-lib "core")
|
(t/is (= "red" (-> (ctob/get-set tokens-lib "core")
|
||||||
(ctob/get-token "color")
|
(ctob/token-by-name "color")
|
||||||
(:value))))
|
(:value))))
|
||||||
(done))))))))
|
(done))))))))
|
||||||
|
|
||||||
@@ -97,5 +97,5 @@ color.value tries to reference missing, which is not defined.")))
|
|||||||
(dwti/import-file-stream "")
|
(dwti/import-file-stream "")
|
||||||
(rx/subs! (fn [tokens-lib]
|
(rx/subs! (fn [tokens-lib]
|
||||||
(t/is (instance? ctob/TokensLib tokens-lib))
|
(t/is (instance? ctob/TokensLib tokens-lib))
|
||||||
(t/is (= "{missing}" (:value (ctob/get-token-in-set tokens-lib "core" "color"))))
|
(t/is (= "{missing}" (:value (ctob/get-token-by-name tokens-lib "core" "color"))))
|
||||||
(done))))))))
|
(done))))))))
|
||||||
|
|||||||
Reference in New Issue
Block a user