Skip to content

Commit 10a4beb

Browse files
authored
Merge pull request #16 from alexxero/unexpected-fields-wont-break-code
Unexpected fields wont result an exception
2 parents e7cc423 + d9e6ce7 commit 10a4beb

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

lib/types/map_type.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@ defmodule Talos.Types.MapType do
136136
end
137137

138138
defp fields_by_key(keys, fields) do
139-
Enum.map(keys, fn key -> Enum.find(fields, &(&1.key == key)) end)
139+
keys
140+
|> Enum.map(fn key -> Enum.find(fields, &(&1.key == key)) end)
141+
|> Enum.filter(&(!is_nil(&1)))
140142
end
141143

142144
defp find_field_errors(fields, map) do

test/types/map_type_test.exs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,4 +301,18 @@ defmodule Talos.Types.MapTypeTest do
301301
assert %{} == MapType.errors(schema, %{"name" => "Dmitry"})
302302
assert %{} == MapType.errors(schema, %{"age" => 88})
303303
end
304+
305+
test "#errors - with required_any_one = true and unexpected keys" do
306+
schema =
307+
map(
308+
required_any_one: true,
309+
fields: [
310+
field(key: "name", type: string()),
311+
field(key: "age", type: integer(gteq: 18))
312+
]
313+
)
314+
315+
assert %{} ==
316+
MapType.errors(schema, %{"age" => 18, "unexpected" => true})
317+
end
304318
end

0 commit comments

Comments
 (0)