From 95bef3950df6239d5eac53c1da8356cab467adf6 Mon Sep 17 00:00:00 2001 From: Dimitris Zorbas Date: Tue, 8 Jul 2025 17:59:12 +0300 Subject: [PATCH 1/2] Support references in assert_operation_response/2 --- lib/open_api_spex/test/test_assertions.ex | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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) From 2c16780538d9a6336a942392d5ee09a637db1f42 Mon Sep 17 00:00:00 2001 From: Dimitris Zorbas Date: Tue, 8 Jul 2025 18:12:25 +0300 Subject: [PATCH 2/2] fixup! Support references in assert_operation_response/2 --- test/support/api_spec.ex | 2 +- test/support/pet_controller.ex | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) 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