From 248a78b89443eaeaf44bb8e0f48048a15d25aa55 Mon Sep 17 00:00:00 2001 From: Ian Asaff Date: Wed, 5 Feb 2025 02:04:26 -0500 Subject: [PATCH] fix outer enum number bug elixir generator (#20592) --- .../src/main/resources/elixir/deserializer.ex.mustache | 8 ++++---- .../petstore/elixir/lib/openapi_petstore/deserializer.ex | 8 ++++---- samples/client/petstore/elixir/test/outer_enum_test.exs | 8 ++++++-- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache b/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache index 53a68dfde0f..6c3ece2818a 100644 --- a/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache +++ b/modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache @@ -94,10 +94,6 @@ defmodule {{moduleName}}.Deserializer do defp to_struct(value, module) defp to_struct(nil, _), do: nil - defp to_struct(binary, module) when is_binary(binary) and is_atom(module) do - module.decode(binary) - end - defp to_struct(list, module) when is_list(list) and is_atom(module) do Enum.map(list, &to_struct(&1, module)) end @@ -113,4 +109,8 @@ defmodule {{moduleName}}.Deserializer do end) |> module.decode() end + + defp to_struct(value, module) when is_atom(module) do + module.decode(value) + end end diff --git a/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex b/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex index 01cb4bbdf5f..ff702b7bd29 100644 --- a/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex +++ b/samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex @@ -96,10 +96,6 @@ defmodule OpenapiPetstore.Deserializer do defp to_struct(value, module) defp to_struct(nil, _), do: nil - defp to_struct(binary, module) when is_binary(binary) and is_atom(module) do - module.decode(binary) - end - defp to_struct(list, module) when is_list(list) and is_atom(module) do Enum.map(list, &to_struct(&1, module)) end @@ -115,4 +111,8 @@ defmodule OpenapiPetstore.Deserializer do end) |> module.decode() end + + defp to_struct(value, module) when is_atom(module) do + module.decode(value) + end end diff --git a/samples/client/petstore/elixir/test/outer_enum_test.exs b/samples/client/petstore/elixir/test/outer_enum_test.exs index 5cb41e8fc59..d8a6f38cf06 100644 --- a/samples/client/petstore/elixir/test/outer_enum_test.exs +++ b/samples/client/petstore/elixir/test/outer_enum_test.exs @@ -7,7 +7,9 @@ defmodule OuterEnumTest do @valid_json """ { "enum_string": "UPPER", - "outerEnum": "placed" + "enum_number": 1.1, + "outerEnum": "placed", + "outerEnumInteger": 1 } """ @@ -17,7 +19,9 @@ defmodule OuterEnumTest do {:ok, %EnumTest{ enum_string: "UPPER", - outerEnum: "placed" + enum_number: 1.1, + outerEnum: "placed", + outerEnumInteger: 1 }} end end