Skip to content

Commit a33ea71

Browse files
committed
test: avoid minitest stub/mock dependency across Ruby versions
1 parent 6428519 commit a33ea71

3 files changed

Lines changed: 33 additions & 6 deletions

File tree

test/test_helper.rb

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
end
1414

1515
require "minitest/autorun"
16-
require "minitest/mock"
1716
require "transloadit"
1817
require "vcr"
1918
require "open3"
@@ -73,3 +72,29 @@ def run_transloadit_sig(payload, key:, secret:, algorithm: nil)
7372
end
7473

7574
Minitest::Test.include(TransloaditCliHelpers)
75+
76+
module SingletonMethodOverrideHelpers
77+
def with_singleton_method(target, name, implementation)
78+
eigenclass = class << target
79+
self
80+
end
81+
82+
backup = "__orig_#{name}_for_test__"
83+
had_method = eigenclass.method_defined?(name) || eigenclass.private_method_defined?(name)
84+
eigenclass.send(:alias_method, backup, name) if had_method
85+
86+
target.define_singleton_method(name, &implementation)
87+
yield
88+
ensure
89+
eigenclass = class << target
90+
self
91+
end
92+
eigenclass.send(:remove_method, name) rescue nil
93+
if had_method
94+
eigenclass.send(:alias_method, name, backup)
95+
eigenclass.send(:remove_method, backup) rescue nil
96+
end
97+
end
98+
end
99+
100+
Minitest::Test.include(SingletonMethodOverrideHelpers)

test/unit/test_transloadit.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@
109109

110110
it "must produce Transloadit-compatible JSON output" do
111111
fixed_time = Time.utc(2025, 10, 28, 0, 0, 0)
112-
Time.stub :now, fixed_time do
112+
with_singleton_method(Time, :now, proc { fixed_time }) do
113113
_(@transloadit.to_json).must_equal MultiJson.dump(@transloadit.to_hash)
114114
end
115115
end

test/unit/transloadit/test_assembly.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,14 @@
146146
it "must call the create! method with the same parameters" do
147147
VCR.use_cassette "submit_assembly" do
148148
file = open("lib/transloadit/version.rb")
149-
mocker = Minitest::Mock.new
150-
mocker.expect :call, nil, [file]
151-
@assembly.stub :create!, mocker do
149+
create_arg = nil
150+
with_singleton_method(@assembly, :create!, proc { |arg|
151+
create_arg = arg
152+
nil
153+
}) do
152154
@assembly.submit!(file)
153155
end
154-
mocker.verify
156+
_(create_arg).must_equal file
155157
end
156158
end
157159
end

0 commit comments

Comments
 (0)