Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 7 additions & 19 deletions lib/helper/validator/schema.ex
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,12 @@ defmodule Helper.Validator.Schema do
end)
end

defp match(field, nil, enum: _, required: false), do: done(field, nil)
defp option_valid?({:min, v}) when is_integer(v), do: true
defp option_valid?({:required, v}) when is_boolean(v), do: true
defp option_valid?(_), do: false

defp match(field, value, enum: enum, required: _) do
match(field, value, enum: enum)
end
defp match(field, nil, enum: _, required: false), do: done(field, nil)
defp match(field, value, enum: enum, required: _), do: match(field, value, enum: enum)

defp match(field, value, enum: enum) do
case value in enum do
Expand All @@ -69,13 +70,8 @@ defmodule Helper.Validator.Schema do
end
end

defp match(field, value, [type | options]) do
match(field, value, type, options)
end

defp match(field, nil, _type, [{:required, false} | _options]) do
done(field, nil)
end
defp match(field, value, [type | options]), do: match(field, value, type, options)
defp match(field, nil, _type, [{:required, false} | _options]), do: done(field, nil)

defp match(field, value, type, [{:required, _} | options]) do
match(field, value, type, options)
Expand Down Expand Up @@ -138,15 +134,7 @@ defmodule Helper.Validator.Schema do
{:error, %{field: field |> to_string, value: value, message: "unknow option: #{option}"}}
end

defp error(field, value, :option) do
{:error, %{field: field |> to_string, value: value, message: "unknow option"}}
end

defp error(field, value, schema) do
{:error, %{field: field |> to_string, value: value, message: "should be: #{schema}"}}
end

defp option_valid?({:min, v}) when is_integer(v), do: true
defp option_valid?({:required, v}) when is_boolean(v), do: true
defp option_valid?(_), do: false
end
1 change: 1 addition & 0 deletions test/helper/validator/schema_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ defmodule GroupherServer.Test.Helper.Validator.Schema do
# hello world
end

@tag :wip2
test "number with wrong option" do
schema = %{"text" => [:number, required: true, min: "5"]}
data = %{"text" => 1}
Expand Down