diff --git a/lib/oas_rails/builders/responses_builder.rb b/lib/oas_rails/builders/responses_builder.rb index c37e149..11e4c20 100644 --- a/lib/oas_rails/builders/responses_builder.rb +++ b/lib/oas_rails/builders/responses_builder.rb @@ -15,7 +15,7 @@ def from_oas_route(oas_route) end def add_autodiscovered_responses(oas_route) - return self unless OasRails.config.autodiscover_responses + return self if !OasRails.config.autodiscover_responses || oas_route.docstring.tags(:response).any? new_responses = Extractors::RenderResponseExtractor.extract_responses_from_source(@specification, source: oas_route.source_string) diff --git a/test/lib/oas_rails/builders/responses_builder_test.rb b/test/lib/oas_rails/builders/responses_builder_test.rb index 245bb2a..b6b5359 100644 --- a/test/lib/oas_rails/builders/responses_builder_test.rb +++ b/test/lib/oas_rails/builders/responses_builder_test.rb @@ -1,35 +1,45 @@ +require "test_helper" + module OasRails module Builders class ResponsesBuilderTest < Minitest::Test def setup @specification = Spec::Specification.new - @oas_route = OasRoute.new_from_rails_route(rails_route: Rails.application.routes.routes.find { |a| a.name == "users_login" }) + @oas_route_login = OasRoute.new_from_rails_route(rails_route: Rails.application.routes.routes.find { |a| a.name == "users_login" }) + @oas_route_show = OasRoute.new_from_rails_route(rails_route: Rails.application.routes.routes.find { |a| a.name == "user" }) end def test_add_autodiscover_responses OasRails.config.autodiscover_responses = true - @responses = ResponsesBuilder.new(@specification).add_autodiscovered_responses(@oas_route).build + @responses = ResponsesBuilder.new(@specification).add_autodiscovered_responses(@oas_route_login).build assert @responses.responses.any? end def test_not_add_autodiscover_responses OasRails.config.autodiscover_responses = false - @responses = ResponsesBuilder.new(@specification).add_autodiscovered_responses(@oas_route).build + @responses = ResponsesBuilder.new(@specification).add_autodiscovered_responses(@oas_route_login).build assert @responses.responses.empty? end def test_add_default_responses OasRails.config.set_default_responses = true - @responses = ResponsesBuilder.new(@specification).add_default_responses(@oas_route, true).build + @responses = ResponsesBuilder.new(@specification).add_default_responses(@oas_route_login, true).build assert @responses.responses.any? end def test_not_add_default_responses OasRails.config.set_default_responses = false - @responses = ResponsesBuilder.new(@specification).add_default_responses(@oas_route, false).build + @responses = ResponsesBuilder.new(@specification).add_default_responses(@oas_route_login, true).build + + assert @responses.responses.empty? + end + + def test_not_add_autodiscovered_responses_when_are_documented_responses + OasRails.config.autodiscover_responses = true + @responses = ResponsesBuilder.new(@specification).add_autodiscovered_responses(@oas_route_show).build assert @responses.responses.empty? end