Skip to content

Commit 75c6271

Browse files
committed
Adapt tests to Rails 8.2+ re-introduction of enqueue_after_transaction_commit
See rails/rails#55788 This setting has gone through different stages, and we must account for them: - Rails 7.1: Method not available (no deferred enqueue) - Rails 7.2: :default (defers to adapter's method, which returns true in Solid Queue's case) - Rails 8.0-8.1: false (no deferred enqueue, the setting was deprecated) - Rails 8.2: true (deferred enqueue enabled by default)
1 parent a0b35ea commit 75c6271

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

test/integration/concurrency_controls_test.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,9 @@ class ConcurrencyControlsTest < ActiveSupport::TestCase
178178
end
179179

180180
test "verify transactions remain valid after Job creation conflicts via limits_concurrency" do
181-
# Doesn't work with enqueue_after_transaction_commit? true on SolidQueueAdapter, but only Rails 7.2 uses this
182-
skip if Rails::VERSION::MAJOR == 7 && Rails::VERSION::MINOR == 2
181+
# Doesn't work when enqueue_after_transaction_commit is enabled
182+
skip if ActiveJob::Base.respond_to?(:enqueue_after_transaction_commit) &&
183+
[ true, :default ].include?(ActiveJob::Base.enqueue_after_transaction_commit)
183184

184185
ActiveRecord::Base.transaction do
185186
NonOverlappingUpdateResultJob.perform_later(@result, name: "A", pause: 0.2.seconds)

test/models/solid_queue/job_test.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,9 @@ class DiscardableNonOverlappingGroupedJob2 < NonOverlappingJob
340340
end
341341

342342
test "enqueue successfully inside a rolled-back transaction in the app DB" do
343-
# Doesn't work with enqueue_after_transaction_commit? true on SolidQueueAdapter, but only Rails 7.2 uses this
344-
skip if Rails::VERSION::MAJOR == 7 && Rails::VERSION::MINOR == 2
343+
# Doesn't work when enqueue_after_transaction_commit is enabled
344+
skip if ActiveJob::Base.respond_to?(:enqueue_after_transaction_commit) &&
345+
[ true, :default ].include?(ActiveJob::Base.enqueue_after_transaction_commit)
345346
assert_difference -> { SolidQueue::Job.count } do
346347
assert_no_difference -> { JobResult.count } do
347348
JobResult.transaction do

0 commit comments

Comments
 (0)