@@ -24,6 +24,12 @@ class ExampleWithDefaults < ExampleModel
2424 field :type , String , default : "example"
2525 end
2626
27+ class ExampleWithBooleans < Auth0 ::Internal ::Types ::Model
28+ field :blocked , Auth0 ::Internal ::Types ::Boolean , optional : true
29+ field :active , Auth0 ::Internal ::Types ::Boolean , optional : true , api_name : "isActive"
30+ field :enabled , Auth0 ::Internal ::Types ::Boolean , optional : true , default : false
31+ end
32+
2733 class ExampleChild < Auth0 ::Internal ::Types ::Model
2834 field :value , String
2935 end
@@ -110,6 +116,42 @@ class ExampleParent < Auth0::Internal::Types::Model
110116 assert_equal 2014 , example . year
111117 refute_respond_to example , :yearOfRelease
112118 end
119+
120+ it "preserves false values on construction and in to_h" do
121+ example = ExampleWithBooleans . new ( blocked : false , active : false )
122+
123+ assert_same false , example . blocked
124+ assert_same false , example . active
125+ assert_same false , example . to_h [ "blocked" ]
126+ assert_same false , example . to_h [ "isActive" ]
127+ end
128+
129+ it "preserves false values when loaded from JSON" do
130+ example = ExampleWithBooleans . load ( '{"blocked":false,"isActive":false}' )
131+
132+ assert_same false , example . blocked
133+ assert_same false , example . active
134+ end
135+
136+ it "keeps an explicit false instead of falling back to the default" do
137+ assert_same false , ExampleWithBooleans . new . enabled
138+ assert_same true , ExampleWithBooleans . new ( enabled : true ) . enabled
139+ assert_same false , ExampleWithBooleans . new ( enabled : false ) . enabled
140+ end
141+
142+ it "falls back to the field name when the api_name value is nil" do
143+ example = ExampleWithBooleans . new ( isActive : nil , active : true )
144+
145+ assert_same true , example . active
146+ refute_respond_to example , :isActive
147+ end
148+
149+ it "does not leak a consumed key into extra fields" do
150+ example = ExampleWithBooleans . new ( isActive : false , active : true )
151+
152+ assert_same false , example . active
153+ refute ExampleWithBooleans . extra_fields . key? ( :active )
154+ end
113155 end
114156
115157 describe "#inspect" do
0 commit comments