diff --git a/lib/committee/test/methods.rb b/lib/committee/test/methods.rb index 9b06fc98..49c9a46e 100644 --- a/lib/committee/test/methods.rb +++ b/lib/committee/test/methods.rb @@ -23,6 +23,8 @@ def assert_request_schema_confirm(except: {}) schema_validator.request_validate(request_object) end end + + increment_assertion_count end def assert_response_schema_confirm(expected_status = nil) @@ -46,6 +48,8 @@ def assert_response_schema_confirm(expected_status = nil) end schema_validator.response_validate(status, headers, [body], true) if validate_response?(status) + + increment_assertion_count end def committee_options @@ -90,6 +94,13 @@ def old_behavior private + # assert_*_schema_confirm signal failure by raising, not via `assert`, + # so Minitest would report "Test is missing assertions" on success. + # Bump the counter explicitly; no-op outside Minitest (e.g. RSpec). + def increment_assertion_count + assert true if respond_to?(:assertions) + end + # Temporarily adds dummy values for excepted parameters during validation # @see ExceptParameter def with_except_params(except) diff --git a/test/test/methods_test.rb b/test/test/methods_test.rb index eebc4f32..a9b000d1 100644 --- a/test/test/methods_test.rb +++ b/test/test/methods_test.rb @@ -151,6 +151,14 @@ def response_data assert_request_schema_confirm end + it "increments the Minitest assertion count on success" do + @app = new_rack_app + get "/characters" + before_count = assertions + assert_request_schema_confirm + assert_equal before_count + 1, assertions + end + it "not exist required" do @app = new_rack_app get "/validate", { "query_string" => "query", "query_integer_list" => [1, 2] } @@ -397,6 +405,14 @@ def response_data assert_response_schema_confirm(200) end + it "increments the Minitest assertion count on success" do + @app = new_rack_app(JSON.generate(@correct_response)) + get "/characters" + before_count = assertions + assert_response_schema_confirm(200) + assert_equal before_count + 1, assertions + end + it "detects an invalid response Content-Type" do @app = new_rack_app(JSON.generate([@correct_response]), {}) get "/characters"