@@ -459,6 +459,13 @@ defmodule OpenApiSpex.Schema do
459459 def validate ( % Schema { nullable: _ } , nil , path , _schemas ) do
460460 { :error , "#{ path } : unexpected null value" }
461461 end
462+ def validate ( % Schema { enum: options = [ _ | _ ] } , value , path , _schemas ) do
463+ case Enum . member? ( options , value ) do
464+ true -> :ok
465+ _ ->
466+ { :error , "#{ path } : Value not in enum: #{ inspect ( value ) } " }
467+ end
468+ end
462469 def validate ( % Schema { type: type } , value , path , _schemas ) when type in [ :integer , :number ] and not is_number ( value ) do
463470 { :error , "#{ path } : expected value of type #{ type } " }
464471 end
@@ -472,8 +479,7 @@ defmodule OpenApiSpex.Schema do
472479 def validate ( schema = % Schema { type: :string } , value , path , _schemas ) do
473480 with :ok <- validate_max_length ( schema , value , path ) ,
474481 :ok <- validate_min_length ( schema , value , path ) ,
475- :ok <- validate_pattern ( schema , value , path ) ,
476- :ok <- validate_enum ( schema , value , path ) do
482+ :ok <- validate_pattern ( schema , value , path ) do
477483 :ok
478484 end
479485 end
@@ -553,16 +559,6 @@ defmodule OpenApiSpex.Schema do
553559 end
554560 end
555561
556- @ spec validate_enum ( Schema . t , String . t , String . t ) :: :ok | { :error , String . t }
557- def validate_enum ( % { enum: nil } , _val , _path ) , do: :ok
558- def validate_enum ( % { enum: options } , value , path ) do
559- case Enum . member? ( options , value ) do
560- true -> :ok
561- _ ->
562- { :error , "#{ path } : Value not in enum: #{ Enum . join ( options , ", " ) } " }
563- end
564- end
565-
566562 @ spec validate_max_items ( Schema . t , list , String . t ) :: :ok | { :error , String . t }
567563 defp validate_max_items ( % Schema { maxItems: nil } , _val , _path ) , do: :ok
568564 defp validate_max_items ( % Schema { maxItems: n } , value , _path ) when length ( value ) <= n , do: :ok
0 commit comments