From aa28a19d015e8a6b050c0fe3d582dc33327b4d53 Mon Sep 17 00:00:00 2001 From: Patrick Arnett Date: Mon, 2 Mar 2026 21:02:48 -0500 Subject: [PATCH] Fix failing/flaky test --- activeresource-response.gemspec | 1 + lib/active_resource_response/connection.rb | 20 ++++++++++++++------ test/active_resource_response_test.rb | 4 +++- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/activeresource-response.gemspec b/activeresource-response.gemspec index 657ad72..fa4e410 100644 --- a/activeresource-response.gemspec +++ b/activeresource-response.gemspec @@ -14,6 +14,7 @@ Gem::Specification.new do |s| s.license = 'MIT' s.add_runtime_dependency('activeresource', ['>= 6.1', '< 6.2']) + s.add_dependency 'activesupport' s.add_dependency "jruby-openssl" if RUBY_PLATFORM == "java" s.add_development_dependency "minitest" s.add_development_dependency 'rake' diff --git a/lib/active_resource_response/connection.rb b/lib/active_resource_response/connection.rb index ea2a222..21b2ff1 100644 --- a/lib/active_resource_response/connection.rb +++ b/lib/active_resource_response/connection.rb @@ -22,6 +22,18 @@ #++ module ActiveResourceResponse module Connection + class Current < ActiveSupport::CurrentAttributes + attribute :http_responses, default: {} + + def http_response(klass) + http_responses[klass] + end + + def set_http_response(klass, response) + http_responses[klass] = response + end + end + def self.included(base) base.class_eval do alias_method :origin_handle_response, :handle_response @@ -38,15 +50,11 @@ def handle_response(response) end def http_response - http_storage[:ActiveResourceResponse] + Current.http_response(self.class) end def http_response=(response) - http_storage[:ActiveResourceResponse] = response - end - - def http_storage - Thread.current + Current.set_http_response self.class, response end end end diff --git a/test/active_resource_response_test.rb b/test/active_resource_response_test.rb index 81ad11b..444d782 100644 --- a/test/active_resource_response_test.rb +++ b/test/active_resource_response_test.rb @@ -50,6 +50,8 @@ def setup mock.get "/streets/1/city.json", {}, @city.to_json, 200, {"X-total"=>'1'} mock.get "/streets/1.json", {}, @street.to_json, 200, {"X-total"=>'1'} end + + ActiveResourceResponse::Connection::Current.reset end @@ -115,7 +117,7 @@ def test_get_headers_from_find_when_404_custom_get end def test_get_headers_from_find_when_404_custom_prefix - Status.all params: { country_id: 1 } + Status.all(params: { country_id: 1 }).to_a assert_equal Status.http_response.code, 404 end