Skip to content

Commit 0babd37

Browse files
committed
improve error for enum type mismatch
1 parent f2c71bf commit 0babd37

2 files changed

Lines changed: 6 additions & 6 deletions

File tree

lib/open_api_spex/cast/enum.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ defmodule OpenApiSpex.Cast.Enum do
33
alias OpenApiSpex.Cast
44

55
def cast(ctx = %Cast{schema: %{enum: enum}, value: value}) do
6-
case Enum.find(enum, {:error, :invalid_enum}, &equivalent?(&1, value)) do
7-
{:error, :invalid_enum} -> Cast.error(ctx, {:invalid_enum})
6+
case Enum.find(enum, {:error, :invalid_enum, enum, value}, &equivalent?(&1, value)) do
7+
{:error, :invalid_enum, enum, value} -> Cast.error(ctx, {:invalid_enum, enum, value})
88
found -> {:ok, found}
99
end
1010
end

lib/open_api_spex/cast/error.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ defmodule OpenApiSpex.Cast.Error do
196196
|> add_context_fields(ctx)
197197
end
198198

199-
def new(ctx, {:invalid_enum}) do
200-
%__MODULE__{reason: :invalid_enum}
199+
def new(ctx, {:invalid_enum, enum, value}) do
200+
%__MODULE__{reason: :invalid_enum, meta: %{enum: enum, value: value}}
201201
|> add_context_fields(ctx)
202202
end
203203

@@ -329,8 +329,8 @@ defmodule OpenApiSpex.Cast.Error do
329329
"Invalid format. Expected #{inspect(format)}"
330330
end
331331

332-
def message(%{reason: :invalid_enum}) do
333-
"Invalid value for enum"
332+
def message(%{reason: :invalid_enum, meta: %{enum: enum, value: value}}) do
333+
"Invalid value for enum, allowed_values: #{inspect(enum)}, got: #{inspect(value)}"
334334
end
335335

336336
def message(%{reason: :polymorphic_failed, type: polymorphic_type}) do

0 commit comments

Comments
 (0)