diff --git a/common/src/app/common/types/tokens_lib.cljc b/common/src/app/common/types/tokens_lib.cljc index 573dac181d..63cd87e393 100644 --- a/common/src/app/common/types/tokens_lib.cljc +++ b/common/src/app/common/types/tokens_lib.cljc @@ -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)))) diff --git a/common/test/common_tests/types/tokens_lib_test.cljc b/common/test/common_tests/types/tokens_lib_test.cljc index 150ffcfb08..23bed42897 100644 --- a/common/test/common_tests/types/tokens_lib_test.cljc +++ b/common/test/common_tests/types/tokens_lib_test.cljc @@ -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))))