Skip to content

Commit 4729f0d

Browse files
authored
Merge pull request #25 from redwirelabs/optional-booleans-are-nil
Optional boolean that is not present returns nil
2 parents fd23fd4 + de06780 commit 4729f0d

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

lib/speck.ex

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,6 @@ defmodule Speck do
5757
}
5858
end
5959

60-
opts[:optional] && is_nil(raw_value) && type == :boolean ->
61-
{
62-
Map.put(fields, name, false),
63-
errors,
64-
make_meta(name, field_status, raw_value)
65-
}
66-
6760
is_nil(opts[:optional]) && is_nil(raw_value) ->
6861
{
6962
fields,
@@ -72,7 +65,11 @@ defmodule Speck do
7265
}
7366

7467
opts[:optional] && is_nil(raw_value) ->
75-
{fields, errors, make_meta(name, field_status, raw_value)}
68+
{
69+
Map.put(fields, name, nil),
70+
errors,
71+
make_meta(name, field_status, raw_value)
72+
}
7673

7774
is_list(type) ->
7875
raw_value

test/speck_test.exs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ defmodule Speck.Test do
77
"type" => "air_quality",
88
"rs485_address" => "5",
99
"serial_number" => "DEVICE1234567890",
10+
# wifi_ssid => not present
1011
# low_power_mode => not present
1112
"dns_servers" => [
1213
"1.1.1.1",
@@ -34,7 +35,7 @@ defmodule Speck.Test do
3435
rs485_address: 5,
3536
serial_number: "DEVICE1234567890",
3637
wifi_ssid: nil,
37-
low_power_mode: false,
38+
low_power_mode: nil,
3839
dns_servers: [
3940
"1.1.1.1",
4041
"1.0.0.1",
@@ -702,8 +703,8 @@ defmodule Speck.Test do
702703
attribute_5: 5
703704
},
704705
list_attribute_1: [
705-
%{},
706-
%{attribute_9: 9}
706+
%{attribute_9: nil},
707+
%{attribute_9: 9},
707708
],
708709
list_attribute_2: []
709710
}
@@ -767,7 +768,7 @@ defmodule Speck.Test do
767768
partially_known_nested: %{
768769
attribute_5: 5
769770
},
770-
list_attribute_1: [%{}],
771+
list_attribute_1: [%{attribute_9: nil}],
771772
list_attribute_2: []
772773
}
773774

0 commit comments

Comments
 (0)