diff --git a/lib/open_api_spex/test/test_assertions.ex b/lib/open_api_spex/test/test_assertions.ex index 809044d6..a08a37c0 100644 --- a/lib/open_api_spex/test/test_assertions.ex +++ b/lib/open_api_spex/test/test_assertions.ex @@ -166,8 +166,17 @@ defmodule OpenApiSpex.TestAssertions do Map.get(responses, code_range) || Map.get(responses, :"#{code_range}", %{}) + resolved_response = + case response do + %OpenApiSpex.Reference{} = ref -> + OpenApiSpex.Reference.resolve_response(ref, spec.components.responses) + + _ -> + response + end + resolved_schema = - response + resolved_response |> Map.get(:content, %{}) |> Map.get(content_type, %{}) |> Map.get(:schema) diff --git a/test/support/api_spec.ex b/test/support/api_spec.ex index 5c2629af..ec59dda1 100644 --- a/test/support/api_spec.ex +++ b/test/support/api_spec.ex @@ -76,7 +76,7 @@ defmodule OpenApiSpexTest.ApiSpec do } }, responses: %{ - unprocessable_entity: %Response{ + "unprocessable_entity" => %Response{ description: "Unprocessable Entity", content: %{"application/json" => %MediaType{schema: %Schema{type: :object}}} } diff --git a/test/support/pet_controller.ex b/test/support/pet_controller.ex index 9b5e7150..8ae0474a 100644 --- a/test/support/pet_controller.ex +++ b/test/support/pet_controller.ex @@ -47,7 +47,9 @@ defmodule OpenApiSpexTest.PetController do ], responses: [ ok: {"Pet list", "application/json", Schemas.PetsResponse}, - unprocessable_entity: OpenApiSpex.JsonErrorResponse.response() + unprocessable_entity: %OpenApiSpex.Reference{ + "$ref": "#/components/responses/unprocessable_entity" + } ], operation_id: "listPets" def index(conn, _params) do