File tree Expand file tree Collapse file tree 2 files changed +13
-2
lines changed
spec/integration/dry/configurable Expand file tree Collapse file tree 2 files changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -57,8 +57,7 @@ def []=(name, value)
57
57
# @api public
58
58
def update ( values )
59
59
values . each do |key , value |
60
- case value
61
- when Hash
60
+ if value . is_a? ( Hash ) && self [ key ] . is_a? ( self . class )
62
61
self [ key ] . update ( value )
63
62
else
64
63
self [ key ] = value
Original file line number Diff line number Diff line change 35
35
expect ( klass . config . db . user ) . to eql ( "jane" )
36
36
expect ( klass . config . db . pass ) . to eql ( "supersecret" )
37
37
end
38
+
39
+ it 'runs constructors' do
40
+ klass . setting :db do
41
+ setting :user , default : "root" , constructor : -> ( v ) { v . upcase }
42
+ setting :sslcert , constructor : -> ( v ) { v &.values_at ( :pem , :pass ) &.join }
43
+ end
44
+
45
+ klass . config . update ( db : { user : "jane" , sslcert : { pem : "cert" , pass : "qwerty" } } )
46
+
47
+ expect ( klass . config . db . user ) . to eql ( "JANE" )
48
+ expect ( klass . config . db . sslcert ) . to eql ( "certqwerty" )
49
+ end
38
50
end
39
51
40
52
describe "#to_h" do
You can’t perform that action at this time.
0 commit comments