File tree 2 files changed +16
-2
lines changed
2 files changed +16
-2
lines changed Original file line number Diff line number Diff line change 486
486
(when (or (not optional) add-optional-keys)
487
487
(let [e (find p key)]
488
488
(when-some [f (if e (constantly (val e))
489
- (get-default v))]
489
+ (or (get-default v)
490
+ (when (m/-ref-schema? v)
491
+ (get-default (m/-deref v)))))]
490
492
[k (fn [] (default-fn schema (f )))])))))
491
493
(m/children schema))]
492
494
(when (seq defaults )
Original file line number Diff line number Diff line change 3
3
[clojure.test :refer [are deftest is testing]]
4
4
[malli.core :as m]
5
5
[malli.core-test]
6
+ [malli.registry :as mr]
6
7
[malli.transform :as mt])
7
8
#? (:clj (:import (java.net URI))))
8
9
1032
1033
1033
1034
(testing " :default/fn property on schema"
1034
1035
(let [schema [:string {:default/fn (fn [] " called" )}]]
1035
- (is (= " called" (m/decode schema nil mt/default-value-transformer))))))
1036
+ (is (= " called" (m/decode schema nil mt/default-value-transformer)))))
1037
+
1038
+ (testing " :refs"
1039
+ (let [opts {:registry (mr/composite-registry m/default-registry
1040
+ {" bing" :int })}
1041
+ transformer (mt/default-value-transformer {:defaults {:int (constantly 7 )}})]
1042
+ (is (= 7 (m/decode [:ref " bing" ] nil opts transformer)))
1043
+ (is (= [7 ] (m/decode [:vector [:ref " bing" ]] [nil ] opts transformer)))
1044
+ (is (= {:a 7 } (m/decode [:map [:a [:ref " bing" ]]] {:a nil } opts transformer)))
1045
+ (is (= {:a 7 } (m/decode [:map [:a [:ref " bing" ]]] {} opts transformer)))
1046
+ (is (= {:a 8 } (m/decode [:map [:a [:ref {:default 8 } " bing" ]]] {:a nil } opts transformer)))
1047
+ (is (= {:a 8 } (m/decode [:map [:a [:ref {:default 8 } " bing" ]]] {} opts transformer))))))
1036
1048
1037
1049
(deftest type-properties-based-transformations
1038
1050
(is (= 12 (m/decode malli.core-test/Over6 " 12" mt/string-transformer))))
You can’t perform that action at this time.
0 commit comments