🐛 Fix nil values being inserted into TokenTheme :sets field (#8560)

* 🐛 Fix nil values being inserted into TokenTheme :sets field
* 📎 Use transducer form for filter in make-token-theme

Signed-off-by: Andrey Antukh <niwi@niwi.nz>

---------

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
This commit is contained in:
Andrey Antukh
2026-03-10 15:44:06 +01:00
committed by GitHub
parent 3141f67cd7
commit 7248db28c8
2 changed files with 18 additions and 10 deletions

View File

@@ -611,7 +611,7 @@
is-source
external-id
(ct/now)
set-names))
(into #{} (filter some?) set-names)))
(enable-set [this set-name]
(set-sets this (conj sets set-name)))
@@ -632,14 +632,9 @@
(update-set-name [this prev-set-name set-name]
(if (get sets prev-set-name)
(TokenTheme. id
name
group
description
is-source
external-id
(ct/now)
(conj (disj sets prev-set-name) set-name))
(let [sets (-> (disj sets prev-set-name)
(conj set-name))]
(set-sets this sets))
this))
(theme-matches-group-name [this group name]
@@ -724,7 +719,7 @@
(update :is-source d/nilv false)
(update :external-id #(or % (str new-id)))
(update :modified-at #(or % (ct/now)))
(update :sets set)
(update :sets #(into #{} (filter some?) %))
(check-token-theme-attrs)
(map->TokenTheme))))

View File

@@ -235,6 +235,19 @@
(t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"expected valid params for token-theme"
(ctob/make-token-theme params)))))
(t/deftest make-token-theme-strips-nil-from-sets
(t/testing "make-token-theme strips nil values from :sets"
(let [theme (ctob/make-token-theme :name "test" :sets #{"valid-set" nil})]
(t/is (= (:sets theme) #{"valid-set"}))))
(t/testing "enable-set with nil set-name does not add nil to :sets"
(let [theme (ctob/make-token-theme :name "test" :sets #{"existing-set"})
theme' (ctob/enable-set theme nil)]
(t/is (= (:sets theme') #{"existing-set"}))))
(t/testing "toggle-set with nil set-name does not add nil to :sets"
(let [theme (ctob/make-token-theme :name "test" :sets #{})
theme' (ctob/toggle-set theme nil)]
(t/is (= (:sets theme') #{})))))
(t/deftest make-tokens-lib
(let [tokens-lib (ctob/make-tokens-lib)]
(t/is (= (ctob/set-count tokens-lib) 0))))